ImageVerifierCode 换一换
你正在下载:

排序.docx

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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

排序.docx

1、排序课程名称: 数据结构课程设计课程设计题目: 排序姓 名: 院系: 计算机科学与技术学院 专 业: 计算机科学与技术 年 级: 2011级 学 号: 指导教师: 王爱平2013 年 9月 14 日 目 录1 课程设计的目的32 需求分析3 3 课程设计报告内容3 3.1概要设计33.2详细设计43.3调试分析4 3.4用户手册4 3.5测试结果4 4 小结 4 5程序清单46 参考文献 97 程序截图 9 1.课程设计的目的(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设

2、计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2.需求分析各种排序算法性能比较利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。要求:至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、2-路插入排序、希尔排序、起泡排序、改进的冒泡排序、快速排序、选择排序、堆排序、归并排序、三部排序、计数排序、鸽巢排序、鸡尾酒排序、地精排序、奇偶排序、梳排序、耐心排序标红的至少选择一种)。并把排序后的结果保存在不同的文件中。统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

3、3 排序的设计3.1概要设计typedef int ElemType;链表数据结构:typedef struct SqList ElemType *elem; int length;SqList, *PList;3.2详细设计void InitSqList(PList List)/函数功能:链表初始化void RandomElemToSqList(PList List)/函数功能:用随机数填充链表void CopySqList(PList List1, PList List2)/函数功能:链表复制void SqListToFile(PList List, FILE *fp)/函数功能:将链表的

4、内容写入文件void InsertSort(PList List)/函数功能:插入排序int Partition(PList List, int low, int high)/函数功能:将链表分成两部分,前面小于pivotkey,后面大于pivotkeyvoid QSort(PList List, int low, int high)/函数功能:快速排序void GnomeSort(PList List)/函数功能:地精排序,冒泡排序的变种void PigeonholeSort(PList List)/函数功能:鸽巢排序3.3调试分析(略)3.4用户手册(略)3.5测试结果(略)4总结(略)5

5、、程序清单:#include #include #include #include #define MAX 80000typedef int ElemType;typedef struct SqList/链表 ElemType *elem; int length;SqList, *PList;void InitSqList(PList);void RandomElemToSqList(PList);void CopySqList(PList, PList);void SqListToFile(PList, FILE *);void InsertSort(PList);void QSort(PL

6、ist, int, int);void GnomeSort(PList);void PigeonholeSort(PList);int Partition(PList, int, int);int main() FILE *fp; long start, end; SqList List1, List2, List3, List4; InitSqList(&List1); InitSqList(&List2); InitSqList(&List3); InitSqList(&List4); RandomElemToSqList(&List1); CopySqList(&List2, &List

7、1); CopySqList(&List3, &List1); CopySqList(&List4, &List1); printf(*排序元素个数%d*n, MAX); fp = fopen(QSort.txt, w); printf( 快速排序用时:); start = clock(); QSort(&List1, 1, MAX); end = clock(); printf(%6dmsn, end-start); SqListToFile(&List1, fp); fclose(fp); fp = fopen(InsertSort.txt, w); printf( 插入排序用时:); s

8、tart = clock(); InsertSort(&List2); end = clock(); printf(%6dmsn, end-start); SqListToFile(&List2, fp); fclose(fp); fp = fopen(GnomeSort.txt, w); printf( 地精排序用时:); start = clock(); GnomeSort(&List3); end = clock(); printf(%6dmsn, end-start); SqListToFile(&List3, fp); fclose(fp); fp = fopen(Pigeonhol

9、eSort.txt, w); printf( 鸽巢排序用时:); start = clock(); PigeonholeSort(&List4); end = clock(); printf(%6dmsn, end-start); SqListToFile(&List4, fp); return 0;void InitSqList(PList List)/函数功能:链表初始化 if(!(List-elem = (ElemType *)malloc(MAX+1)*sizeof(ElemType) exit(1); List-length = MAX;void RandomElemToSqList

10、(PList List)/函数功能:用随机数填充链表 time_t t; ElemType k; int i; srand(unsigned)time(&t); for(i=1; ilength; i+) k = rand()%MAX; List-elemi = k; void CopySqList(PList List1, PList List2)/函数功能:链表复制 int i; for(i=1; ilength; i+) List1-elemi = List2-elemi; List1-length = List2-length;void SqListToFile(PList List,

11、 FILE *fp)/函数功能:将链表的内容写入文件 int i; for(i=1; ilength; i+) fprintf(fp, %6d , List-elemi); if(i%17 = 0) fprintf(fp, n); void InsertSort(PList List)/函数功能:插入排序 int i, j; for(i=2; ilength; i+) if(List-elemielemi-1) List-elem0 = List-elemi; List-elemi = List-elemi-1; for(j=i-2; ; j-) if(List-elem0List-elemj

12、) break; List-elemj+1 = List-elemj; List-elemj+1 = List-elem0; int Partition(PList List, int low, int high)/函数功能:将链表分成两部分,前面小于pivotkey,后面大于pivotkey ElemType pivotkey; List-elem0 = List-elemlow; pivotkey = List-elemlow; while(lowhigh) while(lowelemhigh=pivotkey) -high; List-elemlow = List-elemhigh; w

13、hile(lowelemlowelemhigh = List-elemlow; List-elemlow = List-elem0; return low;void QSort(PList List, int low, int high)/函数功能:快速排序 int pivotloc; if(lowhigh) pivotloc = Partition(List, low, high); QSort(List, low, pivotloc-1); QSort(List, pivotloc+1, high); void GnomeSort(PList List)/函数功能:地精排序,冒泡排序的变种

14、 int i = 1; ElemType e; while(ilength) if(1 = i | List-elemi-1 elemi) i+; continue; else e = List-elemi; List-elemi = List-elemi-1; List-elemi-1 = e; i-; continue; void PigeonholeSort(PList List)/函数功能:鸽巢排序 int i, j, k=1; ElemType *ph; if(!(ph = (ElemType *)malloc(MAX*sizeof(ElemType) printf(溢出n); return; for(i=0; iMAX; i+) phi = 0; for(i=1; ilength; i+) phList-elemi+; for(i=0; iMAX; i+) for(j=0; jelemk+ = i; 6、参考文献1 严蔚敏,吴伟民 编著. 数据结构(C 语言版)-北京: 清华大学出版社,2007.2 严蔚敏,吴伟民 米 宁 编著. 数据结构题集(C 语言版)-北京: 清华大学出版社, 2007.3网上搜索相关程序作为参考7、程序运行结果运行截图快速排序:插入排序:地精排序:鸽巢排序:

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

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