文档详情

排序算法课程设计.doc

发布:2018-05-11约9.86千字共14页下载文档
文本预览下载声明
排序算法课程设计 专 业 班 级 学 号 姓 名 指导老师 一:课程设计的目的 掌握各种排序的基本思想 掌握各种排序的算法实现 掌握各种排序的算法优劣分析花费的时间计算 掌握各种排序算法所适用的不同场合。 二:课程设计的内容 (1)冒泡、直插、选择、快速、希尔、归并、堆排序算法进行比较; (2)待排序的元素的关键字为整数。其中的数据用伪随机产生程序产生(如10000个,1000个),再使用各种算法对其进行排序,记录其排序时间,再汇总比较; (3)将每次测试所用的时间,用条形图进行表示,以便比较各种排序的优劣。 三:课程设计的实现 直接插入排序 #include iostream.h typedef int keytype; struct datatype { keytype key; }; /* int rand(void); void srand(unsigned int seed ); */ #includestdlib.h #includestdio.h #includetime.h #includewindows.h void InsertSort (datatype a[], int n) //用直接插入法对a[0]--a[n-1]排序 { int i, j; datatype temp; for(i=0; in-1; i++) { temp = a[i+1]; j = i; while(j -1 temp.key = a[j].key) { a[j+1] = a[j]; j--; } a[j+1] = temp; } } void main() { /*srand((unsigned)time(NULL));// 随机种子 */ /*time_t t; srand((unsigned)time(t));*/ time_t t1,t2; srand((unsigned)GetCurrentTime()); datatype num[10000]; t1=GetCurrentTime(); for(int i=0;i10000;i++) { num[i].key=rand(); } int n=10000; InsertSort(num,n); for(int j=0;j10000;j++) coutnum[j].keyendl; t2=GetCurrentTime(); coutThe t1 time is:t1The t2 time is:t2 t2-t1:t2-t1endl; getchar(); } (2)希尔排序 #include iostream.h /* int rand(void); void srand(unsigned int seed ); */ #includestdlib.h #includestdio.h #includetime.h #includewindows.h typedef int keytype; struct datatype { keytype key; }; void ShellSort (datatype a[], int n, int d[], int numOfD) //用希尔排序法对记录a[0]--a[n-1]排序 //各组内采用直接插入法排序 { int i, j, k, m, span; datatype temp; for(m = 0; m numOfD; m++) { span = d[m]; for(k = 0; k span; k++) { for(i = k; i n-span; i = i+span) { temp = a[i+span]; j = i; while(j -1 temp.key = a[j].key) { a[j+span] = a[j]; j = j-span; } a[j+span] = temp; } } } } void main() { /*srand((unsigned)time(NULL));// 随机种子 */ /*time_t t; srand((unsigned)time(t));*/ time_t t1,t2; srand
显示全部
相似文档