各种排序算法性能比较 顾云康E01114300文档格式.docx

上传人:b****6 文档编号:16160971 上传时间:2022-11-21 格式:DOCX 页数:15 大小:161.32KB
下载 相关 举报
各种排序算法性能比较 顾云康E01114300文档格式.docx_第1页
第1页 / 共15页
各种排序算法性能比较 顾云康E01114300文档格式.docx_第2页
第2页 / 共15页
各种排序算法性能比较 顾云康E01114300文档格式.docx_第3页
第3页 / 共15页
各种排序算法性能比较 顾云康E01114300文档格式.docx_第4页
第4页 / 共15页
各种排序算法性能比较 顾云康E01114300文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

各种排序算法性能比较 顾云康E01114300文档格式.docx

《各种排序算法性能比较 顾云康E01114300文档格式.docx》由会员分享,可在线阅读,更多相关《各种排序算法性能比较 顾云康E01114300文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

各种排序算法性能比较 顾云康E01114300文档格式.docx

附录10

1课程设计的目的

(1)熟练使用C语言编写程序,解决实际问题;

(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法

和技能;

(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

2需求分析

(1)使用数组来存放产生的40000个随机数

(2)编写统计程序运行时间的函数

(3)编写快速排序、冒泡排序、插入排序、梳排序四种排序算法的函数

(4)编写主函数,控制程序运行

3课程设计报告内容

3.1概要设计

(1)使用四种排序算法:

插入排序、冒泡排序、快速排序、梳排序

(2)使用clock()函数来统计时间

3.2详细设计

(1)主函数:

intmain()

{

intnumber[MAX]={0};

intnumber1[MAX]={0};

intnumber2[MAX]={0};

intnumber3[MAX]={0};

intnumber4[MAX]={0};

inti;

srand((unsigned)time(NULL));

/*播种子*/

for(i=0;

i<

MAX;

i++)

{

number[i]=rand()%20000;

/*产生101以内的随机整数*/

number1[i]=number2[i]=number3[i]=number4[i]=number[i];

while(number[i]==0)

{

number[i]=rand()%20000;

number1[i]=number2[i]=number3[i]=number4[i]=number[i];

}

}

//快速排序并计算时间

clock_tbegin1,end1;

doublecost1;

begin1=clock();

quicksort(number1,MAX);

end1=clock();

cost1=(double)(end1-begin1)/CLOCKS_PER_SEC;

//冒泡排序并计算时间

clock_tbegin2,end2;

doublecost2;

begin2=clock();

Bubble(number2,MAX);

end2=clock();

cost2=(double)(end2-begin2)/CLOCKS_PER_SEC;

//插入排序并计算时间

clock_tbegin3,end3;

doublecost3;

begin3=clock();

insertSort(number3,MAX);

end3=clock();

cost3=(double)(end3-begin3)/CLOCKS_PER_SEC;

//梳排序并计算时间

clock_tbegin4,end4;

doublecost4;

begin4=clock();

combsort(number4,MAX);

end4=clock();

cost4=(double)(end4-begin4)/CLOCKS_PER_SEC;

for(intj=0;

j<

MAX;

j++)

printf("

%d"

number1[j]);

printf("

\n"

);

排序完成!

快速排序耗时:

%lfseconds\n"

cost1);

冒泡排序耗时:

cost2);

插入排序耗时:

cost3);

梳排序耗时:

cost4);

return0;

}

(2)插入排序函数:

voidinsertSort(inta[],intlen)

inti,j,temp;

for(i=1;

len;

i++)

temp=a[i];

for(j=i-1;

j>

=0;

j--)

if(a[j]>

temp)

{

a[j+1]=a[j];

}else

break;

}

a[j+1]=temp;

(3)冒泡排序函数:

voidBubble(inta[],intlen)

intlength=len;

inti=0;

intj=0;

for(;

i<

len;

i++)

for(;

length;

if(a[j]>

a[j+1])

inttemp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

length--;

j=0;

(4)快速排序函数:

intpartions(intl[],intlow,inthigh)

intprvotkey=l[low];

l[0]=l[low];

while(low<

high)

while(low<

high&

&

l[high]>

=prvotkey)

--high;

l[low]=l[high];

l[low]<

=prvotkey)

++low;

l[high]=l[low];

l[low]=l[0];

returnlow;

voidqsort(intl[],intlow,inthigh)

intprvotloc;

if(low<

prvotloc=partions(l,low,high);

//将第一次排序的结果作为枢轴

qsort(l,low,prvotloc-1);

//递归调用排序由low到prvotloc-1

qsort(l,prvotloc+1,high);

//递归调用排序由prvotloc+1到high

voidquicksort(intl[],intn)

qsort(l,1,n);

//第一个作为枢轴,从第一个排到第n个

(5)梳排序函数:

voidcombsort(inta[],intn)

floatshrink_factor=1.3;

intgap=n,swapped=1,swap,i;

while((gap>

1)||swapped)

if(gap>

1)gap=gap/shrink_factor;

swapped=0;

i=0;

while((gap+i)<

n)

if(a[i]-a[i+gap]>

0)

swap=a[i];

a[i]=a[i+gap];

a[i+gap]=swap;

swapped=1;

++i;

3.3调试分析

(1)使用随机数产生函数,产生40000个随机数,再使用四种算法进行排序,并统计各种算法统计时间。

(2)运行截图如下:

(3)由多次试验结果可得,梳排序和快速排序的排序速度相对较快。

4总结

通过这次课程设计我认识到了排序功能在解决实际问题中的作用,使我对数据结构的学习有了更进一步的理解。

在完成本次课程设计中,我发现很多理论性知识在实际使用时与单纯的理论还是有所差别的,今后我会更加注重培养自己的实践动手能力。

5程序清单

见附录

6参考文献

[1]严蔚敏,吴伟民编著.数据结构(C语言版)--北京:

清华大学出版社,2007.

[2]严蔚敏,吴伟民米宁编著.数据结构题集(C语言版)--北京:

[3]http:

//zh.wikipedia.org/wiki/%E6%A2%B3%E6%8E%92%E5%BA%8F

7程序运行结果

附录

程序清单:

#include"

stdafx.h"

#include<

stdio.h>

stdlib.h>

time.h>

/*用到了time函数,所以要有这个头文件*/

#defineMAX40000

//插入排序

//冒泡排序

//快速排序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1