ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:150.23KB ,
资源ID:16353366      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16353366.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(排序算法比较Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

排序算法比较Word文档格式.docx

1、1.1 题目分析比较冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序等排序算法的运行速度,通过设计的程序显示各排序算法的比较次数与交换次数从而进一步分析各排序算法的优劣。;1.2 数据结构排序算法的比较问题中涉及的数据结构包括对冒泡函数,插入函数,选择函数,快速排序函数,希尔排序函数的定义与使用。1.3 流程图排序算法的比较流程如图1所示:图1排序算法的比较流程图1.4 实现技术为实现上述设计,采用C+语言,VS2008开发环境。具体采用的技术如下:(1)对函数的定义与调用(2)各函数运行的内部比较实现步骤如下:(1)用随机数生成器输入你所需要的数组内数的个数。(2)分别定义冒泡排序,

2、插入排序,选择排序,快速排序,希尔排序函数。(3)分别调用各个排序函数,将随机数生成器生成的数组导入各函数。(4)运行程序,显示各函数的比较次数与交换次数,从而进行比较。运行结果如下:注意:此处应采用软件截图说明!输入元素个数为20输入元素个数为1001.5 设计结论和心得通过课程设计得到如下结论:(1)快速排序与希尔排序的比较次数与交换次数较其他的要少。(2)冒泡排序较其他排序相对比较麻烦。(3)对于一般的排序,比较次数多,而交换次数相对较少;而快速排序比较次数和交换次数都较少,两者相差不如前者大。其中冒泡排序比较和交换次数都很大。有如下几点心得体会:(1)实验中的存在问题和提高,存在问题:

3、程序有待增强。提高:界面处理简洁。(2)收获与体会各种排序的算法,排序的算法的比较次数与移动次数的计算,随机数的生成2 Linux代码分析为了进一步了解操作系统内核,学习了Linux操作系统的进程同步程序,主要程序源代码如下:#include iostreamusing namespace std;#define LS(a,b) (a)#define MAXSIZE 10000typedef int KeyType;typedef struct KeyType key;RedType;RedType rMAXSIZE+1;int length;SqList;int compare=0;int

4、change=0;int Create_Sq(SqList &L) int k;coutk;L.length=k;srand(time(NULL); for (int x=1; x=k; x+) L.rx.key= rand() % k;/随机域为0k return 1;void Bubble_sort(SqList &L)/冒泡排序int i,j,l,k=L.length,m=0,n=0;for(i=1;i=L.length-1;+i) for(j=1;j=k-1;+j) +m; if(LL(L.rj.key,L.rj+1.key) l=L.rj.key; L.rj.key=L.rj+1.k

5、ey; L.rj+1.key=l; +n; -k;endl-冒泡排序后的序列-endl;=L.length;i+) cout L.ri.key;冒泡排序的比较次数:m冒泡排序的交换次数:n void InsertSort(SqList &L)/插入排序int i,j,m=0,n=0; for(i=2;+i) if(LS(L.ri.key,L.ri-1.key) L.r0=L.ri; L.ri=L.ri-1; for(j=i-2;LS(L.r0.key,L.rj.key);-j) L.rj+1=L.rj; L.rj+1=L.r0;-直接插入排序后的序列-直接插入排序的比较次数:直接插入排序的交换

6、次数: void SelectSort(SqList &L) /简单选择排序int l,i,j,m=0,n=0;L.length; j=i+1; l=i; for(j; if(LL(L.r0.key,L.rj.key) l=j; L.r0=L.rj; if(l!=i) L.rl=L.ri; L.ri=L.r0;-简单选择排序后的序列-简单选择排序的比较次数:简单选择排序的交换次数:int Partition(SqList &L,int low,int high)int pivotkey;L.r0=L.rlow;pivotkey=L.rlow.key;while(lowhigh) while(l

7、ow=pivotkey) +compare; -high; +change; L.rlow=L.rhigh;L.rlow.key +low; L.rhigh=L.rlow;L.rlow=L.r0;return low;void QSort(SqList &L,int low,int high)/递归形式的快速排序算法int pivotloc;if(low pivotloc=Partition(L,low,high); QSort(L,low,pivotloc-1); QSort(L,pivotloc+1,high);void QuickSort(SqList &L)int i;QSort(L,

8、1,L.length);-快速排序后的序列为-快速排序的比较次数:compare快速排序的交换次数:change0&j-=dk) L.rj+dk=L.rj; L.rj+dk=L.r0; void ShellSort(SqList &L,int dlta)/希尔排序int k,j=L.length/2,t=0;while(j=0) +t; j-=2;j=L.length/2;for(k=0;kt;+k)/计算每次的增量值 if(j=0) j=1;/定义最后一趟排序的增量 dltak=j;+k) ShellInsert(L,dltak);-希尔排序后的序列为-for(k=1;k+)L.rk.key

9、;希尔排序的比较次数:希尔排序的交换次数:/*这里是改造后的main,他的原始形式是dev自动生成的*/ int main(int argc, char *argv)int dltaMAXSIZE;SqList L,a,b,c,d;Create_Sq(L);a=b=c=d=L;Bubble_sort(L);InsertSort(a);SelectSort(b);QuickSort(c);ShellSort(d,dlta); system(PAUSE); return EXIT_SUCCESS;功能说明这一段程序的主要功能为:(1)显示同一数组用不同的排序方法的比较次数与交换次数。(2)比较各排

10、序算法的优劣。2.1 局部数据结构局部变量及数据结构,其类型定义及语义如下:1. 数据定义2. 函数如下,代码详见文件“排序比较.cpp”L)void InsertSort(SqList &void SelectSort(SqList &L,int low,int high)void ShellInsert(SqList &void ShellSort(SqList &L,int dlta )2.2 流程图本程序的流程图如图2所示图2程序流程图2.3 以实例说明运行过程理论分析可以得出各种排序算法的时间复杂度和空间复杂度,如下表所示:影响排序的因素: 待排序的记录数目n 的大小。 记录本身数据量的大小,也就是记录中除关键字外的其他信息量的大小。 关键字的结构及其分布情况。 对排序稳定性的要求

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

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