- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排序算法 王桐林 寿光现代中学 排序及基本概念 1.什么是排序? 排序是数据处理中经常使用的一种重要运算,他是一种很基本的算法,很多题目的关键问题就决定于排序。特别是在今天的信息学奥赛中,在空间允许的前提下,提高时间效率,是程序能否通过大数据量的测试的关键,而能否熟练的对数据排序,至关重要。 一般情况下,可以认为排序问题的输入是n个数a1,a2,…,an,设计一个有效的排序算法,产生输入序列的一个重排a1’,a2’,…,an’,使得a1’≤ a2’≤…≤an’(或a1’≥ a2’ ≥ … ≥ an’)。输入序列通常是一个有n个元素的数组。 在实际程序设计中,待排序的对象往往不是单一的数,而是一个记录,其中有一个关键字域key,他才是排序的根据。设有n个记录{R1,R2,……,Rn}组成的序列,n个记录对应的关键字集合为{K1,K2,……,Kn}。所谓排序就是将这n个记录按关键字大小递增或递减重新排列。 对于排序算法来说,无论待排序的对象是单个的数值,还是记录,他们的排序方法都是一样的。 2.稳定性 当待排序的数值或记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一。如果序列中关键字相同的多个记录经过某种排序方法进行排序之后,仍能保持它们在排序之前的相对次序,则称这种排序方法是稳定的;否则,称这种排序方法是不稳定的。 例如:有一组记录的关键字为(23,85,72,58,23,40),其中关键字同为23的记录有两个(为了区分,后一个23带有下划线), 如果一种排序算法使排序后的结果是 (23,23,40,58,72,85),则此方法是稳定的; 如果另一种排序算法使排序后的结果是 (23,23,40,58,72,85),则此方法是不稳定的, 3.排序的方式 由于数据大小不同使排序过程中涉及的存储器不同,可将排序分成内部排序和外部排序两类。整个排序过程都在内存进行的排序,称为内部排序;反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序。 内部排序适用于记录(数值)个数不是很多的小文件,而外部排序则适用于记录(数值)个数太多,不能一次性放人内存的大文件。 内部排序是排序的基础,本讲主要介绍各种内部排序的方法。 冒泡排序 插入排序 简单的排序算法,若数据量较大,则效率很低 选择排序 快速排序 冒泡排序之改进,最常用! 堆排序 归并排序 一、冒泡排序 基本思想:交换排序 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。 排序过程: 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上“漂浮”,如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。 最多进行n-1趟排序,每趟排序时,从底部向上扫描,一旦发现两个相邻的元素不符合规则,则交换。我们发现,第一趟排序后,最小值在A[1],第二趟排序后,较小值在A[2],第n-1趟排序完成后,所有元素完全按顺序排列。 冒泡排序过程示例 待排序数据:53??33??19??53??3??63??82??20??19??39 第一趟排序后:3??53??33??19??53??19??63??82??20??39 第一趟排序后:3??53??33??19??53??19??63??82??20??39 第二趟排序后:3??19??53??33??19??53??20??63??82??39第三趟排序后:3??19??19??53??33??20??53??39??63??82第四趟排序后:3??19??19??20??53??33??39??53??63??82第五趟排序后:3??19??19??20 33 53? 39??53??63??82第六趟排序后: 3??19??19??20 33 39 53 ?53??63??82第七趟排序后: 3??19??19??20 33 39 53 ?53??63??82没有反序数据,排序结束。 Procedure BubbleSort(Var R : FileType) {从下往上扫描的冒泡排序}Begin??For i := 1
您可能关注的文档
最近下载
- 中文分级阅读测评系统.pdf VIP
- 油气勘探风险评价与决策技术:方法、应用与创新.docx VIP
- 六朝古都齐聚首 烟花三月下扬州.doc VIP
- 深圳市建设工程消防设计疑难解析.doc VIP
- 铜绿假单胞的治疗药物选择.ppt VIP
- ASCO300系列开路切换自动转换开关ATS.doc VIP
- ASCO300系列.pdf VIP
- 项目一集控运行职业岗位认知课件.pptx VIP
- Nordic 系列:nRF52840 (基于 Cortex-M4)_(25).nRF52840的硬件测试.docx VIP
- Nordic 系列:nRF52840 (基于 Cortex-M4)_(16).nRF52840的硬件设计指南.docx VIP
文档评论(0)