- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单元实验二排序算法
排序的分类
插入排序(直插排序、二分插入排序、希尔排序)
交换排序(冒泡排序、快速排序)
内部排序选择排序(简单选择排序、树型排序、堆排序)
归并排序(二路归并排序、多路归并排序)
分配排序(多关键字排序、基数排序)
排序
多路平衡归并排序
外部排序置换一选择排序
最佳归并树
直接插入排序
■直接插入排序( Straight Insertion Sorting)的基本思
想是:n个待排序的元素由一个有序表和一个无序表组成,
开始时有序表中只包含一个元素。排序过程中,每次从
无序表中取出第一个元素,将其插入到有序表中的适当
位置,使有序表的长度不断加长,完成排序过程。
有序序列R[1-1
无序序列R[in
RIil
有序序列R[1
无序序列R[i+1n
冒泡排序
■冒泡排序( Bubble sorting)的基本思想是:将相邻位置
的关键字进行比较,若为逆序则交换之
n-i+1
无序序列R1n+1|有序序列Rni+2n
比较相邻记录,将关键字最大的记
第i趟起泡排序
录交换到ni+1的位置上
无序列Rn有序序列Rm+,n
>若在一趟排序过程中没有进行过交换记录的操作,则
整个排序过程终止。时
简单选择排序
■简单选择排序的基本思想是:第一趙在n个记录中选取最
小记录作为有序序列的第一个记录,第二趙在n-1个记录
中选取最小记录作为有序序列的第二个记录,第i趙在n
i+1个记录中选取最小的记录作为有序序列多中的第i个
记录。
有序序列R11
无序序列R[in
第i趟
从中选出关键字最小的记录
简单选择排序
有序序列R[1
无序序列R[i+1n
基本要求
1.用随机函数产生1000个(或更多)整数(或浮点数),保
存在文件( intfile.dat/ readfile.dat)中,然后将文件中的所
有整数(或浮点数)读入一个数组A。
(1)用冒泡法对数组A排序
(2)用简单选择排序方法对数组A排序
(3)用直接插入排序法对数组A排序;
将上述排序算法分别用函数实现,输出每种排序过程中元素
的比较次数、交换(或移动)次数,以及排序过程所消耗的
时间(以s或ms为单位);
基本要求
2.将问题1中所有1000个(或更多)整数读入数组A,用快速
排序算法对数组A中的元素排序,输岀排序结果、排序过程
中元素的比较和交换(移动)次数、排序算法消耗的时间;
3.利用上面实现的任意一种排序算法,对实验题目一所产生的
学生信息文件 studinfo.dat,读取其中的所有学生信息
(1)按学号排序输出学生信息;
(2)按姓名排序输出学生信息;
(3)按三门课程的平均分从高到低排序输出学生信息(除
了学生基本信息外,还要输出每个学生的平均成绩),最后
再加一行输出信息:每门课程的平均成绩。
快速排序
■快速排序( Quick Sorting)是迄今为止所有内排序算法中
速度最快的一种。其基本思想是:取待排序序列中的某
个元素作为基准(也成为枢轴元素,一般取第一个元
素),通过一趙排序,将待排序列划分为左右两个子序
列,左子序列元素的关键字均小于或等于基准元素的关
键字,右子序列的关键字则大于或等于基准元素的关键
字,然后分别对两个子序列继续进行排序,直至整个序
列有序。
无序的记录序列
次划分
「无序的左子序列枢轴「无序的右子序列
分别进行快速排序
快速排序中的一趟划分
123456789
493865971327495504
pivot
49
3865971327495504
pivot
a[j]与 pivot比较,a[小则aj→a[i
快速排序中的一趟划分
490438659713274955
pIVo
490438659713274955
a[订]与 pivot比较,
a[]大则a[订]→a[j:否则增1
文档评论(0)