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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

内部排序算法比较C语言.docx

1、内部排序算法比较C语言课题:内部排序算法比较 第一章 问题描述 排序是数据结构中重要的一个部分,也是在实际开发中易遇到的问题,所以研究各种排算法的时间消耗对于在实际应用当中很有必要通过分析实际结合算法的特性进行选择和使用哪种算法可以使实际问题得到更好更充分的解决!该系统通过对各种内部排序算法如直接插入排序,冒泡排序,简单选择排序,快速排序,希尔排序,堆排序、二路归并排序等,以关键码的比较次数和移动次数分析其特点,并进行比较,估算每种算法的时间消耗,从而比较各种算法的优劣和使用情况!排序表的数据是多种不同的情况,如随机产生数据、极端的数据如已是正序或逆序数据。比较的结果用一个直方图表示。第二章

2、系统分析 界面的设计如图所示: |*|-欢 迎 使 用-| |-(1)随 机 取 数-| |-(2)自 行 输 入-| |-(0)退 出 使 用-| |*| 请 选 择 操 作 方 式: 如上图所示该系统的功能有: (1):选择1 时系统由客户输入要进行测试的元素个数由电脑随机选取数字进行各种排序结果得到准确的比较和移动次数并打印出结果。 (2)选择2 时系统由客户自己输入要进行测试的元素进行各种排序结果得到准确的比较和移动次数并打印出结果。 (3)选择0 打印“谢谢使用!”退出系统的使用!第三章 系统设计 (I) 友好的人机界面设计:(如图3.1所示)|*|-欢 迎 使 用-| |-(1)随

3、 机 取 数-| |-(2)自 行 输 入-| |-(0)退 出 使 用-| |*| (3.1) (II)方便快捷的操作:用户只需要根据不同的需要在界面上输入系统提醒的操作形式直接进行相应的操作方式即可!如图(3.2所示)|*|-欢 迎 使 用-| |-(1)随 机 取 数-| |-(2)自 行 输 入-| |-(0)退 出 使 用-| |*| 请 选 择 操 作 方 式:(用户在此输入操作方式) (3.2) (III)系统采用定义结构体数组来存储数据 。 (IV)功能介绍:(1)操作功能:a .当用户选择随即电脑随机取数时系统将弹出请输入你要输入的个数 :(用户在此输入要电脑取数的个数) 要

4、是用户输入的数据过大系统将提醒错误超出范围重新输入! b . .当用户选择自行输入时 系统将弹出请输入你要输入的个数(不大于于30的整数): 当用户输完元素的个数之后系统将提示用户依次输入各个元素。 请输入各个元素:(2) 排序功能:系统有 简单选择排序,冒泡排序,堆排序,二路归并排序,快速排序的功能。(3)打印清晰:系统会打印出在排序操作之前电脑随机取数或者用户输入的原始排列顺序;并将排序操作之后的有序数据打印在原始数据的下面以便用户的对比。在排序操作结束之后系统将以直方图的形式打出排序过程中比较和移动次数让客户一目了然地看到排序的结果: 比 较 结 果 排序方式比较次数移动次数 直 接简单

5、选择冒 泡堆 排 序 直 接快 速 第四章 系统实现(一)定义结构体数组:typedef struct int key; datatype; datatype RMAXNUM;/定义结构体数组(二)直接排序: void D_InsertSort(datatype R , int n)/直接排序 int i,j; for(i=2; i=n; i+) cn0+; if (Ri.keyRi-1.key) R0=Ri; mn0+; for(j=i-1; R0.keyRj.key; j-) Rj+1=Rj; Rj+1=R0; mn0+=2; (三)简单选择排序:void Select_Sort(data

6、type R ,int n)/简单选择排序 int i,j,k; for(i=1;in;i+) k=i; for(j=i+1; j=n; j+) cn1+; if(Rj.keyRk.key) k=j; if (i=k) R0=Rk; Rk=Ri; Ri=R0; mn1+=3; (四)冒泡排序:void Bubble_Sort (datatype R , int n)/冒泡排序 int i, j; int swap; for(i=1; in-1; i+) swap=0; for(j=1; j=n-i; j+) cn2+; if (Rj.keyRj+1.key) R0=Rj; Rj=Rj+1; R

7、j+1=R0; mn2+=3; swap=1; if(swap=0) break; (五)堆排序:void HeapAdjust(datatype R , int s, int t) datatype rc; int i,j ; rc=Rs; i=s; for(j=2*i; j=t; j=2*j) cn3+; if(jt & Rj.key Rj.key) break; Ri=Rj; mn3+; i=j; Ri=rc;void HeapSort(datatype R , int n)/堆排序 int i; for(i=n/2; i0; i- ) HeapAdjust(R, i, n); for(

8、i=n; i1; i-) R0=R1; R1=Ri; Ri=R0; mn3+=3; HeapAdjust(R,1, i-1); (六)归并排序: void Merge(datatype R , datatype R1 , int s, int m , int t) int i,j,k; i=s; j=m+1; k=s; while (i=m&j=t) cn4+; if(Ri.keyRj.key) R1k+=Ri+; mn4+; else R1k+=Rj+; mn4+; while (i=m) R1k+=Ri+; mn4+; while (j=t) R1k+=Rj+; mn4+;void MSo

9、rt(datatype R , datatype R1 , int s, int t) int m; if(s=t) R1s=Rs; mn4+; else m=(s+t)/2; MSort(R, R1, s, m); MSort(R, R1, m+1, t); Merge(R1, R, s, m, t); void MergeSort(datatype R , datatype R1 , int n)/归并排序 MSort(R, R1,1, n); int Partition(datatype R , int low, int high) R0=Rlow; mn5+; while(lowhig

10、h) while(low=R0.key) cn5+; high-; if(lowhigh) Rlow=Rhigh; low+; mn5+; while(lowhigh&Rlow.keyR0.key) mn5+; low+; if(lowhigh) Rhigh=Rlow; high-; mn5+; Rlow=R0; mn5+; return low;(七)快速排序:void Quick_Sort(datatype R , int s, int t)/快速排序 int i; if( st ) i = Partition(R, s, t); Quick_Sort(R, s, i-1); Quick_

11、Sort(R, i+1, t); void prin(datatype R,int n) int i ; printf(排序的结果为:); for(i=1;i25) printf(超出范围重新输入!n); goto a; addlist(R,n); printf(排序前元素顺序为:); for(i=1;in+1;i+) printf(%d ,Ri.key); printf(n); D_InsertSort(R,n);/直接排序 prin(R,n); Select_Sort(R,n);/简单选择排序 Bubble_Sort(R, n);/冒泡排序 HeapSort(R, n);/堆排序 data

12、type R1MAXNUM=0; MergeSort(R, R1, n);/二路归并排序 Quick_Sort(R,0, n);/快速排序 (九)用户自行输入: void zixing_input() int n,i; datatype R1MAXNUM=0; printf(请输入你要输入的个数(不大于于30的整数):); scanf(%d,&n); printf(请输入各个元素:); for(i=1;in+1;i+) scanf(%d,&R1i.key); printf(排序前元素顺序为:); for(i=1;in+1;i+) printf(%d ,R1i.key); printf(n);

13、D_InsertSort(R1,n);/直接排序 prin(R1,n); Select_Sort(R1,n);/简单选择排序 Bubble_Sort(R1, n);/冒泡排序 HeapSort(R1, n);/堆排序 datatype R2MAXNUM=0; MergeSort(R1, R2, n);/二路归并排序 Quick_Sort(R1,0, n);/快速排序 (十)主函数调用: int main(void) int s; printf( |*|n); printf( |-欢 迎 使 用-|n); printf( |-(1)随 机 取 数-|n); printf( |-(2)自 行 输

14、入-|n); printf( |-(0)退 出 使 用-|n); printf( |*|n); printf( 请 选 择 操 作 方 式: ); scanf(%d,&s); switch(s) case 1: system(cls) ; sui_ji(); break; case 2: system(cls) ; zixing_input(); break; case 0: printf( 谢谢使用! ); exit(0); break; printf(n );printf( 比 较 结 果 n);printf( n);printf( 排序方式 比较次数 移动次数n);printf( n);

15、printf( 直 接 %d %d n,cn0,mn0);printf( n);printf( 简单选择 %d %d n,cn1,mn1);printf( n);printf( 冒 泡 %d %d n,cn2,mn2);printf( n);printf( 堆 排 序 %d %d n,cn3,mn3); printf( n); printf( 二路归并 %d %d n,cn4,mn4); printf( n); printf( 快 速 %d %d n,cn5,mn5); 第五章 系统测试 (一) 随机取数的测试: (二)自行输入的测试:(三)退出系统:(四)时间的估算: 排序方法平均时间性能最好时间性能最坏时间性能 直 接O(n2)O(n)O(n2)简单选择O(n2)O(n)O(n2)冒 泡O(n2)O(n)O(n2)堆 排 序O(nlog2 n)O(nlog2 n)O(nlog2 n) 直 接O(nlog2 n)O(nlog2 n)O(nlog2 n)快 速 O(nlog2 n)O(nlog2 n)O(nlog2 n)参考文献 1. 作者:张晓莉 王苗 数据结构与算法 机械工业出版社 2008年7月2. 作者:杨升 数据结构 厦门大学出版社 2009年6月教师评语和成绩 2010 年 6 月

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

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