- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》课程设计报告
专 业:
班 级:
姓 名:
学 号:
完成日期:
二0一0年 12月29日
目录
1、问题描述………………………………………..3
2、基本要求……………………………………….3
3、测试数据………………………………………3
4、算法思想………………………………………4
5、模块设计………………………………………5
6、流程图…………………………………………6
7、源程序…………………………………………7
8、测试结果………………………………………..21
9、参考书目……………………………………….24
10、心得体会………………………………………24.
内部排序算法比较
1.问题描述:
任务:
试通过随机的数据比较各算法的关键字比较次数和关键字移动次数
要求:
(1)对以下10种常用的内部排序算法进行比较:直接插入排序、折半插入排序、二路插入排序、希尔排序、起泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序。
(2)待排序表的表长不少于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参见的比较次数和关键字移动次数(关键字交换计为3次移动)。
2.基本要求:
利用随机函数产生100个随机整数,利用直接插入排序、折半插入排序、二路插入排序、希尔排序、起泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序十种排序方法进行排序(结果为由小到大的顺序),并统计比较次数CMPNUM和关键字移动次数CHGNUM.
3.测试数据:
由随机产生器决定。
4.算法思想:
//直接插入排序
void InitLinkList(LinkList *L)
算法思想:从第二个开始,经后面的关键字以此插入它前面已经有序的表中,从而得到一个新的、关键字增一的有序表,最终可将关键字全部排好序。
//折半插入排序
void BInsertSort(LinkList *L, int *CmpNum, int *ChgNum)
算法思想:这是对直接插入排序的改进,在关键字向前面有序表插入时,井陉这般查找,增快查找插入位置的速度。
?//2-路插入排序 void InsertSortBinary(LinkList *L, int *CmpNum, int *ChgNum)算法思想:?2-路插入排序是在折半插入排序的基础上再改进之,其目的是减少排序过程中移动记录的次数,但为此需要n个记录的辅助空间。void ShellInsert(LinkList *L, int dk, int *CmpNum, int *ChgNum)
算法思想:先将整个带排序列分割成为若干个子序列分别进行直接插入排序,待整个序列中的关键字“基本有序”时,在对全体记录进行一次直接插入排序。
//起泡排序
void BubbleSort(LinkList *L, int *CmpNum, int *ChgNum)
算法思想:这是一种简单的“选择”排序的方法,将前一个关键字和后一个关键字比较,关键字大的和小的交换位置,经过一趟交换便得到了最大关键字,以此类推,经过N-1趟后,便可排序完毕。
//快速排序
void QuickSort(LinkList *L, int *CmpNum, int *ChgNum)
算法思想:这是对冒泡排序的一种改进,同过一趟排序将待排记录分割成为独立的两部分,其中一部分的关键字均比另一部分小,则可分别对这两部分记录继续这种排序,达到有序。
//简单选择排序
int SelectMinKey(LinkList *L, int k, int *CmpNum)
算法思想:对待排记录进行N-1次选择,分别选出第1至第N-1大的关键字,序列变为有序了。每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录
//堆排序
void HeapSort(LinkList *L, int *CmpNum, int *ChgNum)
算法思想:将待排序列排成按二叉树形式存储,使所有非终结节点的治军不大于其左右孩子的值,输出堆顶的最小元素,再将其余排成堆,以此类推,可一次选出次小的元素,最终能够排好序。
//归并排序
void MergeSort(LinkList *L, int *CmpNum, int *ChgNum)
算法思想:将一维数组中前后相邻的两个有序序列归并为一个有序序
您可能关注的文档
- 嵌入式系统课程设计报告-基于嵌入式系统的开源游戏模拟器的设计.doc
- 嵌入式课程设计--android聊天室.doc
- 市场营销课程设计--统一绿茶的营销分析.doc
- 食品工程原理课程设计--管壳式冷凝器设计.doc
- 数电课程设计报告--运算器.doc
- 数据结构课程设计报告--模拟停车场管理问题.doc
- 嵌入式系统课程设计--快译通词典.doc
- 数据结构课程设计报告--银行业务活动的模拟.doc
- 数据结构课程设计--括号匹配问题.doc
- 数据库课程设计--汽车修理管理系统.doc
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
文档评论(0)