几种排序的算法时间复杂度比较

上传人:飞*** 文档编号:5026268 上传时间:2017-08-27 格式:DOC 页数:3 大小:41.50KB
返回 下载 相关 举报
几种排序的算法时间复杂度比较_第1页
第1页 / 共3页
几种排序的算法时间复杂度比较_第2页
第2页 / 共3页
几种排序的算法时间复杂度比较_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《几种排序的算法时间复杂度比较》由会员分享,可在线阅读,更多相关《几种排序的算法时间复杂度比较(3页珍藏版)》请在金锄头文库上搜索。

1、几种排序的算法时间复杂度比较1.选择排序:不稳定,时间复杂度 O(n2)选择排序的基本思想是对待排序的记录序列进行 n-1 遍的处理,第 i 遍处理是将 Li.n中最小者与 Li交换位置。这样,经过 i 遍处理之后,前 i 个记录的位置已经是正确的了。 2.插入排序:稳定,时间复杂度 O(n2)插入排序的基本思想是,经过 i-1 遍处理后,L1.i-1己排好序。第 i 遍处理仅将 Li插入 L1.i-1的适当位置,使得 L1.i 又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较 Li和 Li-1,如果 Li-1 Li,则 L1.i已排好序,第 i 遍处理就结束了;否则交换

2、Li与 Li-1的位置,继续比较 Li-1和 Li-2,直到找到某一个位置 j(1ji-1),使得 Lj Lj+1时为止。图1 演示了对 4 个元素进行插入排序的过程,共需要(a),(b),(c)三次插入。3.冒泡排序:稳定,时间复杂度 O(n2)冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后

3、,“ 最轻” 的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第 i 遍处理时,不必检查第 i 高位置以上的元素,因为经过前面 i-1 遍的处理,它们已正确地排好序。 4.堆排序:不稳定,时间复杂度 O(nlog n)堆排序是一种树形选择排序,在排序过程中,将 An看成是完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。 5.归并排序:稳定,时间复杂度 O(nlog n)设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为Al.m,Am+1.h

4、,将它们归并为一个有序数列,并存储在 Al.h。 6.快速排序:不稳定,时间复杂度 最理想 O(nlogn) 最差时间 O(n2)快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少 1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。7.希尔排序:不稳定,时间复杂度 平均时间 O(nlogn) 最差时间 O(ns) 1s2在直接插入排序算法中,每次

5、插入一个数,使有序序列只增加 1 个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为 增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell 于 1959 年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量 d 分成若干组,每组中记录的下标相差 d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到 1 时,整个要排序的数被分成一组,排序完成。排序类别 时间复杂度 稳定插入排序 O(n2) 希尔排序 O(n2) 冒泡排序 O(n2) 选择排序 O(n2) 快速排序 O(Nlogn) 堆排序 O(Nlogn) 归并排序 O(Nlogn)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号