排序算法分析比较.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
排序算法分析比较 王晓宇 北京邮电大学信息与通信工程学院,北京(100876) 摘 要:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的 排列起来的操作。排序是程序设计中非常重要的内容,其算法种类繁多,排序算法的选择会 直接影响到计算的效率。由于实际工作中处理的数据量巨大,所以排序算法对算法本身的速 度要求很高。排序的主要性能指标有算法执行时间、算法本身的复杂度和算法的稳定度。常 用的排序算法主要有:插入排序、选择排序、冒泡排序、快速排序和堆排序等,本文主要介 绍这几种常用的排序算法原理、算法实现和排序性能,并比较他们的异同,最后根据分析的 结果总结出在不同情况选择不同的排序算法以提高排序效率。 关键词:插入排序;选择排序;冒泡排序;快速排序;堆排序 中图分类号:TP393 1. 引言 由于记录的形式、数量和所存放的存储设备不同,排序所采用的方法也不同,不同的排 序方法影响排序的效率。本文主要是讨论常用排序的各种典型方法和算法。常用排序的方法 很多,如果按照排序过程中依据的不同原则对常用排序方法进行分类,则主要有:插人排序、 选择排序、冒泡排序、快速排序和堆排序等五类。为了比较各种排序算法的优劣,要分析算 法的时间复杂性和稳定性,评价排序的另一个主要标准是执行算法所需要的附加空间[1] 。 2. 常用排序算法 2.1 插入排序 2.1.1 基本思想 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依 然有序;直到待排序数据元素全部插入完为止。 2.1.2 排序过程 【示例】: [初始关键字] [49] 38 65 97 76 13 27 49 J=2(38) [38 49] 65 97 76 13 27 49 J=3(65) [38 49 65] 97 76 13 27 49 J=4(97) [38 49 65 97] 76 13 27 49 J=5(76) [38 49 65 76 97] 13 27 49 J=6(13) [13 38 49 65 76 97] 27 49 J=7(27) [13 27 38 49 65 76 97] 49 J=8(49) [13 27 38 49 49 65 76 97] Procedure InsertSort(Var R : FileType); //对 R[1..N]按递增序进行插入排序, R[0]是监视哨// Begin for I := 2 To N Do //依次插入 R[2],...,R[n]// begin R[0] := R[I]; J := I - 1; - 1 - While R[0] < R[J] Do //查找 R[I] 的插入位置// begin R[J+1] := R[J]; //将大于 R[I] 的元素后移// J := J - 1 end R[J + 1] := R[0] ; //插入 R[I] // end End; //InsertSort // 直接插人排序算法简洁,易理解,容易实现。当序列中的记录“基本有序”或 n 值较小时, 它是最佳的排序方法。但是,通常待排记录的数量 n 很大,此时直接插人排序就不适用了。 显然,这个方法是稳定的,且直接插人排序的时间复杂性为饰为。从空间来看,它只需要一 个记录。 2.2 选择排序 2.2.1 基本思想 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数 列的最后,直到全部待排

文档评论(0)

吉吉文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档