1 / 16
文档名称:

排序算法比较.doc

格式:doc   大小:157KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

排序算法比较.doc

上传人:zhufutaobao 2020/2/5 文件大小:157 KB

下载得到文件列表

排序算法比较.doc

文档介绍

文档介绍:哈尔滨理工大学课程设计(数据结构)题 目:    排序算法的比较  课程设计班 级:   姓 名:  指导教师:    系主任:    2013年03月08日目 录1(自己的课程设计题目)问题课程设计            22(使用的程序语言,例如C或C++)代码分析          、直接插入排序、简单选择排序、快速排序、希尔排序等排序算法的运行速度,通过设计的程序显示各排序算法的比较次数与交换次数从而进一步分析各排序算法的优劣。;,插入函数,选择函数,快速排序函数,希尔排序函数的定义与使用。:图1 ,采用C++语言,VS2008开发环境。具体采用的技术如下:(1)对函数的定义与调用(2)各函数运行的内部比较实现步骤如下:(1)用随机数生成器输入你所需要的数组内数的个数。(2)分别定义冒泡排序,插入排序,选择排序,快速排序,希尔排序函数。(3)分别调用各个排序函数,将随机数生成器生成的数组导入各函数。(4)运行程序,显示各函数的比较次数与交换次数,从而进行比较。运行结果如下:注意:此处应采用软件截图说明!!!:(1)快速排序与希尔排序的比较次数与交换次数较其他的要少。(2)冒泡排序较其他排序相对比较麻烦。(3)对于一般的排序,比较次数多,而交换次数相对较少;而快速排序比较次数和交换次数都较少,两者相差不如前者大。其中冒泡排序比较和交换次数都很大。有如下几点心得体会:(1)实验中的存在问题和提高,存在问题:程序有待增强。提高:界面处理简洁。(2)收获与体会各种排序的算法,排序的算法的比较次数与移动次数的计算,随机数的生成2Linux代码分析为了进一步了解操作系统内核,学****了Linux操作系统的进程同步程序,主要程序源代码如下:#include<cstdlib>#include<iostream>usingnamespacestd;#defineLS(a,b)((a)<(b))#defineLL(a,b)((a)>(b))#defineMAXSIZE10000typedefintKeyType;typedefstruct{KeyTypekey;}RedType;typedefstruct{RedTyper[MAXSIZE+1];intlength;}SqList;pare=0;intchange=0;intCreate_Sq(SqList&L){intk;cout<<"20074795元素个数:";cin>>k;=k;srand(time(NULL));for(intx=1;x<=k;x++){[x].key=rand()%k;//随机域为0~k}return1;}voidBubble_sort(SqList&L)//冒泡排序{inti,j,l,k=,m=0,n=0;for(i=1;i<=-1;++i){for(j=1;j<=k-1;++j){++m;if(LL([j].key,[j+1].key)){l=[j].key;[j].key=[j+1].key;[j+1].key=l;++n;}}--k;}cout<<endl<<"-----冒泡排序后的序列-----"<<endl;for(i=1;i<=;i++)cout<<""<<[i].key;cout<<endl;cout<<"冒泡排序的比较次数:";cout<<m<<endl;cout<<"冒泡排序的交换次数:";cout<<n<<endl;}voidInsertSort(SqList&L)//插入排序{inti,j,m=0,n=0;cout<<endl;for(i=2;i<=;++i)if(LS([i].key,[i-1].key)){++m;++n;[0]=[i];[i]=[i-1];for(j=i-2;LS([0].key,[j].key);--j){++m;[j+1]=[j];}[j+1]=[0];}cout<<"-----直接插入排序后的序列-----"<<endl;for(i=1;i<=;i++)cout<<"