输入设计
printf(\数据结构排序综合**************************\\n\ printf(\输入要产生的随机数个数:\
scanf(\ srand((unsigned)time(NULL)); for(i=0;i b[i]=a[i]; printf(\ printf(\插入排序\\n\ printf(\ start=clock(); for(i=1;i t=b[i]; j=i-1; while(b[j]>t && j>=0) { b[j+1]=b[j]; j--; } if(j!=(i-1)) //第i个数字比前面的都大,不需要重新插入 { b[j+1]=t; } } for(i=n-1;i>=0;i--) printf(\ \ finish=clock(); c[0]=finish-start; printf(\插入排序耗时%d毫秒!\\n\\n\\n\ //起泡排序 for(i=0;i printf(\ printf(\起泡排序\\n\ printf(\ start=clock(); n1=n-1; while(n1>0) { j=0; for(i=0;i 6 } { t=b[i]; b[i]=b[i+1]; b[i+1]=t; j=i; } n1=j; printf(\ \ finish=clock(); c[1]=finish-start; printf(\起泡排序耗时%d毫秒!\\n\\n\\n\ //简单选择排序 for(i=0;i printf(\ printf(\简单选择排序\\n\ printf(\ start=clock(); for(i=1;i k=n-1; for(j=k-1;j>i-1;j--) { if(b[j] for(i=n-1;i>=0;i--) printf(\ \ finish=clock(); c[2]=finish-start; printf(\简单选择排序耗时%d毫秒!\\n\\n\\n\ //寻找两种最快方法 for(i=0;i<3;i++) { d[i]=c[i]; } for(i=0;i<3;i++) 7 { t=b[i-1]; b[i-1]=b[k]; b[k]=t; } { for(j=i+1;j<3;j++) { if(d[i]>d[j]) { t=d[i]; d[i]=d[j]; d[j]=t; } } } // printf(\ printf(\排序这组数据最快的两组排序法是:\\n\ if(d[0]==c[0]) printf(\插入排序:%d毫秒\\n\ if(d[0]==c[1]) printf(\起泡排序:%d毫秒\\n\ if(d[0]==c[2]) printf(\简单选择排序:%d毫秒\\n\ if(d[0]!=d[1]) { if(d[1]==c[0]) printf(\插入排序:%d毫秒\\n\ if(d[1]==c[1]) printf(\起泡排序:%d毫秒\\n\ if(d[1]==c[2]) printf(\简单选择排序:%d毫秒\\n\ } } 4调试结果 数据由系统随机产生,不需要输入测试数据,产生数据元素的个数由用户输入。 4.1欢迎界面 4.2产生随机函数 8 4.3 排序 输入50个随机数个排序方法的结果 9 排序时间结果 10 6课程设计总结 通过这次课程设计的学习让我学会了许多,加深了对数据结构排序算法的认识。在这次课程设计中,独立完成了每种排序算法。排序算法选了三个,包括:插入排序、气泡排序、简单选择排序。同时也实现了随机数的生成。虽然在算法完成的过程中从网上参考了一些资料,但对这次课程设计的成果还是非常满意的。 这次的课程设计还有很多不足之处。有些排序方法没有些,像堆排序了,快序排序了。还有就是最后寻找两种最坏的方法时花了很多时间,想了几种方法,开始用结构体,但发现太麻烦了,所以改用了上述方法。由于时间限制,只在课程设计快结束时完成了产生随机文件这部分,我想以后有时间再来完成它。 同时在完成这个课程设计后,我也学到了很多知识,并能训练的掌握他们了。首先学会了随机数的产生。熟练的撑握了C语言的文件读写操作。撑握了每种排序算法的基本思想,并从同学那里学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。当然,还包括如何写出操作简便,感觉友好的界面。 但我还是认为自己还有很多不足,希望以后能弥补。 参考书目 [1] [2] [3] 《数据结构(C语言版)》。严蔚敏,清华大学出版社 《数据结构习题集(C语言版)》。严蔚敏,清华大学出版社 《C语言课程设计案例精编》。郭翠英,中国水利出版社 11