编译环境:Microsoft Visual C++2010学习版
参考教材:数据结构:C语言版/严蔚敏,李冬梅,吴伟民编
备注:本文留作作者自用,如有错误敬请指出
第一步,利用程序随机生成10000个在0-9999之间的数字,将10000个数据保存在数组A中
第二步,分别编写直接插入排序、折半插入排序、希尔排 序、冒泡排序、快速排序、简单选择排序、 归并排序算法程序(每个算法用函数封装)
第三步,调用每个排序方法对数组A进行排序,同时计算消耗时间,并输出。
#include#include #include using namespace std; #define MAXSIZE 10000 typedef int KeyType; int i,j,low,high,m,k,flag,t,pivotkey; typedef struct{ KeyType key; }RedType;//记录类型 RedType S[MAXSIZE+1]; typedef struct{ RedType a[MAXSIZE+1]; int length; }SqList;//顺序表类型 void InsertSort(SqList &L){ //直接插入排序 for( i=2;i =high+1;--j){ L.a[j+1]=L.a[j]; } L.a[high+1]=L.a[0]; } } //********************************* void ShellInsert(SqList &L,int dk){ //希尔排序 for(i=dk+1;i<=L.length;++i){ if(L.a[i].key 0 && L.a[0].key 0 && flag==1){ flag=0; for(j=1;j<=m;++j){ if(L.a[j].key>L.a[j+1].key){ flag=1; t=L.a[j].key; L.a[j].key=L.a[j+1].key; L.a[j+1].key=t; } } --m; } } //********************************* int Partition(SqList &L,int low,int high){ //快速排序 L.a[0]=L.a[low]; pivotkey=L.a[low].key; while(low =pivotkey) --high; L.a[low]=L.a[high]; while(low 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)