- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编程实现排序算法
学 号: 044120108
中国地质大学长城学院
实践课程设计
题 目 编程实现排序算法 学 院 中国地质大学长城学院 专 业 电子信息工程 班 级 电子1201 姓 名 李月朋 指导教师 李润亚
2014 年 12 月 31 日 一、实验目的
⑴掌握排序的基本概念 ⑵熟悉排序中使用的存储结构,掌握多种排序算法,如堆排序、希尔排序、快速排序算法等。
二、实验要求
⑴几种典型的排序算法 ⑵计算不同的排序算法的时间复杂性 ⑶判定某种排序算法是否稳定的标准。
实验方法内容
1. 主要内容
本课程设计一共设计种排序算法。这种算法共包括:直接插入排序,希尔排序,选择排序,冒泡排序。直接插入排序的作法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一比较前两个数,然后把第二个数按大小插入到有序表中; 第二把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的排序时间复杂性为O(n^2),空间复杂度为O(1)。直接插入排序是由两层嵌套循环组成的外层循环标识并决定待比较的数值内层循环为待比较数值确定其最终位置。将待比较的数值与它的前一个数值进行比较,外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束次循环。需用一个存储空间来保存当前待比较的数值每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止先取一个小于n的整数d1作为第一个增量,把全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1(dtdt-l…d2d1),即所有记录放在同一组中进行直接插入排序为止。第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列.
举例:给定n=8,数组R中的8个元素的排序码为(8,3,2,1,7,4,6,5),则直接选择排序的过程如下
初始状态 [ 8 3 2 1 7 4 6 5 ] 8 -- 1
第一次 [ 1 3 2 8 7 4 6 5 ] 3 -- 2
第二次 [ 1 2 3 8 7 4 6 5 ] 3 -- 3
第三次 [ 1 2 3 8 7 4 6 5 ] 8 -- 4
第四次 [ 1 2 3 4 7 8 6 5 ] 7 -- 5
第五次 [ 1 2 3 4 5 8 6 7 ] 8 -- 6
第六次 [ 1 2 3 4 5 6 8 7 ] 8 -- 7
第七次 [ 1 2 3 4 5 6 7 8 ]
排序完成
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。总的平均时间复杂度为
(五)快速排序法:设要排序的数组A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将值为key的项与A[j]交换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将值为key的项与A[i]交换;
5)重复第3、4步,直到i=j(3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[j]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候ij指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。.#include stdio.h#in
您可能关注的文档
- 结构力学8影响线.ppt
- 结构力学习题课.ppt
- 结构力学大作业连续梁的影响线、最不利荷载及内力包络图.doc
- 结构力学期末复习资料(锦城工造).ppt
- 结构力学 力法SC.ppt
- 结构力学典型题.ppt
- 结构力学模拟卷及答案 交通及土交.doc
- 结构力学求解器用法.ppt
- 结构力学6-10章练习题及答案.doc
- 结构力学研究生考试辅导课件.ppt
- 2021海湾消防GST-HX-420BEx 火灾声光警报器安装使用说明书.docx
- 2022海湾消防 GST-LD-8316Ex 手自动转换装置安装使用说明书.docx
- (小升初押题卷)江苏省小升初重难点高频易错培优卷(试题)-2024-2025学年六年级下册数学苏教版.docx
- 2023-2024学年吉林省吉林市舒兰市人教版四年级上册期末考试数学试题.docx
- 2023-2024学年北京市密云区北京版四年级上册期末考试数学试卷.docx
- 2024-2025学年广东省广州市天河区人教版三年级上册期末考试数学试卷.docx
- 2024-2025学年河北省唐山市丰南区人教版五年级上册期末测试数学试卷.docx
- 人教版道德与法治一年级下册第4课《我们有精神》课件.pptx
- 消防蝶阀介绍.pptx
- 室外消火栓设置场所及设置要求.pptx
文档评论(0)