排序算法的时间复杂度和空间复杂度_第1页
排序算法的时间复杂度和空间复杂度_第2页
排序算法的时间复杂度和空间复杂度_第3页
排序算法的时间复杂度和空间复杂度_第4页
排序算法的时间复杂度和空间复杂度_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、排序算法的时间复杂度和空间复杂度常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排 序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。一、冒泡排序:基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素 为止。排序过程:设想被排序的数组R 1.N垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之 下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上漂浮,如此反复进行,直 至最后任何两个气泡都是轻者在上,重者在下为止。【示例】:49 13 13 13

2、13 13 13 1338 49 27 27 27 27 27 2765 38 49 38 38 38 38 3897 65 38 49 49 49 49 4976 97 65 49 49 49 49 4913 76 97 65 65 65 65 6527 27 76 97 76 76 76 7649 49 49 76 97 97 97 97二、快速排序(Quick Sort)基本思想:在当前无序区R1.H中任取一个数据元素作为比较的基准(不妨记为X),用此基准将当前无序区划分为左 右两个较小的无序区:R1.I-1 和RI+1.H,且左边的无序子区中数据元素均小于等于基准元素,右边的无 序子区

3、中数据元素均大于等于基准元素,而基准 X则位于最终排序的位置上,即 R1.I-1 WX.KeyW RI+1.H(1WIWH),当R1.I-1 和RI+1.H均非空时,分别对它们进行上述的划分过程,直至所有无序子区 中的数据元素均已排序为止。排序过程:【示例】:初始关键字49 38 65 97 76 13 27 49第一次交换后27 38 65 97 76 13 49 49第二次交换后27 38 49 97 76 13 65 49J向左扫描,位置不变,第三次交换后27 38 13 97 76 49 65 49I向右扫描,位置不变,第四次交换后27 38 13 49 76 97 65 49J 向左

4、扫描27 38 13 49 76 97 65 49(一次划分过程)初始关键字49 38 65 97 76 13 27 49一趟排序之后27 38 13 49 76 97 65 49二趟排序之后13 27 38 49 49 65 76 97三趟排序之后13 27 38 49 49 65 76 97最后的排序结果13 27 38 49 49 65 76 97三、简单选择排序基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全 部待排序的数据元素排完。排序过程:【示例】:初始关键字49 38 65 97 76 13 27 49第一趟排序后 13 38

5、 65 97 76 49 27 49第二趟排序后 13 27 65 97 76 49 38 49第三趟排序后13 27 38 97 76 49 65 49第四趟排序后13 27 38 49 49 97 65 76第五趟排序后13 27 38 49 49 97 97 76第六趟排序后13 27 38 49 49 76 76 97第七趟排序后13 27 38 49 49 76 76 97最后排序结果13 27 38 49 49 76 76 97四、堆排序(Heap Sort)基本思想:堆排序是一树形选择排序,在排序过程中,将R1.N看成是一颗完全二叉树的顺序存储结构,利用完全二 叉树中双亲结点和孩

6、子结点之间的内在关系来选择最小的元素。堆的定义:N个元素的序列K1,K2,K3,.,Kn.称为堆,当且仅当该序列满足特性:KiWK2i Ki WK2i+1(1W IW N/2)堆实质上是满足如下性质的完全二叉树:树中任一非叶子结点的关键字均大于等于其孩子结点的关键字。 例如序列10,15,56,25,30,70就是一个堆,它对应的完全二叉树如上图所示。这种堆中根结点(称为堆顶) 的关键字最小,我们把它称为小根堆。反之,若完全二叉树中任一非叶子结点的关键字均大于等于其孩子 的关键字,则称之为大根堆。排序过程:堆排序正是利用小根堆(或大根堆)来选取当前无序区中关键字小(或最大)的记录实现排序的。我

7、们不 妨利用大根堆来排序。每一趟排序的基本操作是:将当前无序区调整为一个大根堆,选取关键字最大的堆 顶记录,将它和无序区中的最后一个记录交换。这样,正好和直接选择排序相反,有序区是在原记录区的 尾部形成并逐步向前扩大到整个记录区。【示例】:对关键字序列42,13,91,23,24,16,05,88建堆五、直接插入排序(Insertion Sort)1. 基本思想: 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排 序数据元素全部插入完为止。2.排序过程:【示例】:初始关键字49 38 65 97 76 13 27 49J=2(38) 38 49 65

8、 97 76 13 27 49J=3(65) 38 49 65 97 76 13 27 49J=4(97) 38 49 65 97 76 13 27 49J=5(76) 38 49 65 76 97 13 27 49J=6(13) 13 38 49 65 76 97 27 49J=7(27) 13 27 38 49 65 76 97 49J=8(49) 13 27 38 49 49 65 76 97六、希尔排序排序思想:先取一个小于n的证书d1作为第一个增量,把文件的全部记录分成d1组。所有距离为d1的倍数的记录 放在同一组中。先在各组内进行直接插入排序,然后取第二个增量d2d1重复上述的分组

9、和排序,直到所 取的增量dt=1,即所有记录放在同一组中进行直接插入排序为止。该方法实际上是一种分组插入方法。排序过程:初始关键字 72 28 51 17 96 62 87 33 45 24d1=n/2=562 28 33 17 24 72 87 51 45 96d2=d1/2=317 24 33 62 28 45 87 51 72 96d3=d2/2=117 24 28 33 45 51 62 72 87 96七、归并排序排序思想:设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:Rlow.m,Rm+1.high,先将它们合 并到一个局部的暂存向量R1(相当于输出堆)中,待合并完

10、成后将R1复制回Rlow.high中。排序过程:【示例】:初始关键字46385630888038第一趟归并后38 4630 5680 8838第二趟归并后30 38 46 5638 80 88最终归并结果30 38 38 46 56 80 88八、基数排序排序思想:根据数据项个位上的值,把所有的数据项分为10组;然后对这10组数据重新排列:把所有以0结尾的数据排在最前面,然后是结尾是1的数据项,照此 顺序直到以9结尾的数据,这个步骤称为第一趟子排序;在第二趟子排序中,再次把所有的数据项分为10组,但是这一次是根据数据项十位上的值来分组的。 这次分组不能改变先前的排序顺序。也就是说,第二趟排序之

11、后,从每一组数据项的内部来看,数据项的 顺序保持不变;然后再把10组数据项重新合并,排在最前面的是十位上为0的数据项,然后是10位为1的数据项, 如此排序直到十位上为9的数据项。对剩余位重复这个过程,如果某些数据项的位数少于其他数据项,那么认为它们的高位为0。排序过程【示例】初始关键字 421 240 035 532 305 430 124第一趟排序后240 430 421 532 124 035 305第二趟排序后(305) (421 124) (430 532 035) (240)最后排序结果(035) (124) (240) (305) (421 430) (532)时间复杂度排序方法最好情况最坏情况平均情况稳定性空间复杂度冒泡排序O(n)O(n2)O(n2)稳定快速排序O(nlogn)O(n2)O(nlogn)不稳定简单选择排序O(n2)不稳定堆排序O(nlogn)不稳定直接插入排序O(n)O(n2)O(n2)稳定希尔排序O(n1.3)不稳定归并排序O(nlogn)O(nlogn)O(nlogn)稳定基数排序O(d(r+n)稳定(1)选择排序最好是O(n2)(2)快速排序在平均情况

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论