当前位置:首页 > 大数据结构课程设计_排序算法比较【完整版】
接
插入排序
3、系统将随机数排序后整齐的显示出来。
4、用户可以选择继续排序或者退出系统。
七、程序源代码
/********************************************************************************************** 第六题:排序算法比较
设计要求:利用随机函数产生N个随机整数(N = 500,1000,1500,2000,2500,…,30000),
利用直接插入排序、折半插入排序,起泡排序、快速排序、||选择排序、堆排序,基数排序七种排序方法
(可添加其它排序方法)进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的时间(统计
为图表坐标形式)。
************************************************************************************************/ #include \#include \
#include \中折半查找有序插入的位置 { mid=(low+high)/2; if[0]<[mid]) high]的记录,使得枢轴记录到位,并返回其所在位置,此时在它之前(后)的记录均不大于它 { int pivotkey; i]中最后一个记录互换 [1]=[i]; [i]=t; HeapAdjust(L,1,i-1); i-1]重新调整为大顶堆
} return OK; }
//************************************************** // 基数排序
//************************************************** typedef struct node{ int key; node *next; }RecType;
Status RadixSort(Sqlist L) { int t,i,j,k,d,n=1,m; RecType *p,*s,*q,*head[10],*tail[10]; //定义各链队的首尾指针 for(i=1;i<=;i++) //将顺序表转化为链表 { s=(RecType*)malloc(sizeof(RecType)); s->key=[i]; if(i==1) //当为第一个元素时 { q=s; p=s; t++; } else { q->next=s; //将链表连接起来 q=s; t++; } q->next=NULL; } d=1; while(n>0) //将每个元素分配至各个链队 { for(j=0;j<10;j++) //初始化各链队首、尾指针 { head[j] = NULL; tail[j] = NULL; } while(p!=NULL) //对于原链表中的每个结点循环 { k=p->key/d;
共分享92篇相关文档