您的位置:首页 > 其它

各种排序算法的比较

2016-05-24 11:35 387 查看
一.实验目的

实现常用的排序算法,加深对这些算法的理解,以后可以将这些算法应用到实际问题的解决上。

二.实验题目

1.排序是在实际问题中经常用到的算法,快速、选择和插入三种排序算法是排序算法中最简单的也是最常用到的,实现这三种算法。

2.在不同的数值序列上运行,然后比较三种方法的空间
#include "iostream"
#include "cstdlib"
#include "ctime"
using namespace std;

int count=0;
void init_array(int* array);
void traverse(int* array);
void xuan_ze(int* array);
void insert_sort(int* array);

int partition(int* array,int low,int high);
void fast_sort(int* array,int low,int high);
void fast_sort(int* array);
int main(){
int array[100]={0};
init_array(array);
traverse(array);

xuan_ze(array);
traverse(array);

insert_sort(array);
traverse(array);

fast_sort(array);
traverse(array);

cout<<count<<endl;

return 0;
}

void init_array(int* array){
srand((int)time(0));

for(int i=1;i<=10;i++){//array[0]作为监视哨
array[i]=rand();
count++;
}
}

void traverse(int* array){
for(int i=1;i<=count;i++){
cout<<array[i]<<"\t";
}
cout<<endl;
}

//选择排序
void xuan_ze(int* array){
for(int i=1;i<count;i++){
for(int j=i+1;j<=count;j++){
if(array[i]>array[j]){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
}

//插入排序,核心思想是将一个数据插入有序数组中,使有序数组变成,最终达到排序目的
void insert_sort(int* array){
for(int i=1;i<=count;i++){
array[0]=array[i];
int num=array[i];
int k=i;\
while(num<array[k]){
array[k+1]=array[k];
k--;
}
array[k]=num;
}

}

int partition(int* array,int low,int high){
int number=array[low];
while(low<high){
while(low<high&&array[high]>=number){
high--;
}
int temp=array[low];
array[low]=array[high];
array[high]=temp;
while(low<high&&array[low]<=number){
low++;
}
temp=array[low];
array[low]=array[high];
array[high]=temp;

}
return low;
}

void fast_sort(int* array,int low,int high){
if(low<high){
int position=partition(array,low,high);
fast_sort(array,low,position-1);
fast_sort(array,position+1,high);
}
}

void fast_sort(int* array){
fast_sort(array,1,count);
}


复杂度和时间复杂度,分析比较结果,得出选择这三种排序算法的一般原则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: