各种排序算法性能比较顾云康E01114300

上传人:夏** 文档编号:494795936 上传时间:2023-04-02 格式:DOC 页数:23 大小:189KB
返回 下载 相关 举报
各种排序算法性能比较顾云康E01114300_第1页
第1页 / 共23页
各种排序算法性能比较顾云康E01114300_第2页
第2页 / 共23页
各种排序算法性能比较顾云康E01114300_第3页
第3页 / 共23页
各种排序算法性能比较顾云康E01114300_第4页
第4页 / 共23页
各种排序算法性能比较顾云康E01114300_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《各种排序算法性能比较顾云康E01114300》由会员分享,可在线阅读,更多相关《各种排序算法性能比较顾云康E01114300(23页珍藏版)》请在金锄头文库上搜索。

1、 数据结构课程设计实验报告各种排序算法性能比较 :顾云康 _E1114300 指导王爱平 日期:2013.10.8目 录1 课程设计的目的22 需求分析23 课程设计报告容23.1 概要设计23.2 详细设计23.3 调试分析64 总结75 程序清单86 参考文献87 程序运行结果8附录10 / 1 课程设计的目的(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法 和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2需求分析

2、(1)使用数组来存放产生的40000个随机数(2)编写统计程序运行时间的函数(3)编写快速排序、冒泡排序、插入排序、梳排序四种排序算法的函数 (4 ) 编写主函数,控制程序运行3 课程设计报告容3.1 概要设计(1)使用四种排序算法:插入排序、冒泡排序、快速排序、梳排序(2)使用clock()函数来统计时间3.2 详细设计(1) 主函数:int main()int numberMAX = 0;int number1MAX = 0;int number2MAX = 0;int number3MAX = 0;int number4MAX = 0; int i; srand(unsigned) ti

3、me(NULL); /*播种子*/ for(i = 0; i MAX; i+)numberi = rand() % 20000; /*产生101以的随机整数*/ number1i=number2i=number3i=number4i=numberi; while(numberi=0)numberi = rand() % 20000;number1i=number2i=number3i=number4i=numberi; /快速排序并计算时间clock_t begin1, end1; double cost1; begin1 = clock();quicksort(number1,MAX);en

4、d1 = clock();cost1 = (double)(end1 - begin1) / CLOCKS_PER_SEC; /冒泡排序并计算时间clock_t begin2, end2; double cost2; begin2 = clock();Bubble(number2,MAX);end2 = clock();cost2 = (double)(end2 - begin2) / CLOCKS_PER_SEC;/插入排序并计算时间clock_t begin3, end3; double cost3; begin3 = clock();insertSort(number3,MAX);end

5、3 = clock();cost3 = (double)(end3 - begin3) / CLOCKS_PER_SEC;/梳排序并计算时间clock_t begin4, end4; double cost4; begin4 = clock();combsort(number4,MAX);end4 = clock();cost4 = (double)(end4 - begin4) / CLOCKS_PER_SEC; for(int j=0;jMAX;j+)printf(%d , number1j); printf(n); printf(排序完成!n); printf(快速排序耗时:%lf se

6、condsn, cost1); printf(冒泡排序耗时:%lf secondsn, cost2); printf(插入排序耗时:%lf secondsn, cost3); printf(梳 排 序耗时:%lf secondsn, cost4);return 0;(2) 插入排序函数:void insertSort(int a, int len)int i, j, temp;for(i = 1; i = 0; j -)if(aj temp)aj + 1 = aj;elsebreak;aj + 1 = temp;(3) 冒泡排序函数:void Bubble(int a,int len)int

7、length=len; int i=0; int j=0; for(;ilen;i+)for(;jaj+1)int temp=aj; aj=aj+1; aj+1=temp; length-; j=0;(4) 快速排序函数:int partions(int l,int low,int high)int prvotkey=llow; l0=llow; while (lowhigh)while (low=prvotkey)-high; llow=lhigh; while (lowhigh&llow=prvotkey) +low; lhigh=llow; llow=l0; return low;voi

8、d qsort(int l,int low,int high)int prvotloc; if(low 1) | swapped)if (gap 1) gap = gap / shrink_factor; swapped = 0; i = 0; while (gap + i) 0)swap = ai; ai = ai + gap; ai + gap = swap; swapped = 1; +i;3.3 调试分析(1)使用随机数产生函数,产生40000个随机数,再使用四种算法进行排序,并统计各种算法统计时间。(2) 运行截图如下:(3)由多次试验结果可得,梳排序和快速排序的排序速度相对较快。4

9、 总结 通过这次课程设计我认识到了排序功能在解决实际问题中的作用,使我对数据结构的学习有了更进一步的理解。 在完成本次课程设计中,我发现很多理论性知识在实际使用时与单纯的理论还是有所差别的,今后我会更加注重培养自己的实践动手能力。5 程序清单见附录6 参考文献1严蔚敏,吴伟民 编著. 数据结构(C 语言版)-: 清华大学,2007.2严蔚敏,吴伟民 米 宁 编著. 数据结构题集(C 语言版)-: 清华大学,2007.3 zh.wikipedia.org/wiki/%E6%A2%B3%E6%8E%92%E5%BA%8F7 程序运行结果附 录程序清单:#include stdafx.h#inclu

10、de #include #include /*用到了time函数,所以要有这个头文件*/#define MAX 40000/插入排序void insertSort(int a, int len)int i, j, temp;for(i = 1; i = 0; j -)if(aj temp)aj + 1 = aj;elsebreak;aj + 1 = temp;/冒泡排序void Bubble(int a,int len)int length=len; int i=0; int j=0; for(;ilen;i+)for(;jaj+1)int temp=aj; aj=aj+1; aj+1=temp; length-; j=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号