几种排序的算法时间复杂度比较.doc_第1页
几种排序的算法时间复杂度比较.doc_第2页
几种排序的算法时间复杂度比较.doc_第3页
全文预览已结束

下载本文档

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

文档简介

几种排序的算法时间复杂度比较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遍处理就结束了;否则交换Li与Li-1的位置,继续比较Li-1和Li-2,直到找到某一个位置j(1ji-1),使得Lj Lj+1时为止。图1演示了对4个元素进行插入排序的过程,共需要(a),(b),(c)三次插入。3.冒泡排序:稳定,时间复杂度 O(n2)冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。4.堆排序:不稳定,时间复杂度 O(nlog n)堆排序是一种树形选择排序,在排序过程中,将An看成是完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。5.归并排序:稳定,时间复杂度 O(nlog n)设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为Al.m,Am+1.h,将它们归并为一个有序数列,并存储在Al.h。6.快速排序:不稳定,时间复杂度 最理想 O(nlogn) 最差时间O(n2)快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。7.希尔排序:不稳定,时间复杂度 平均时间 O(nlogn) 最差时间O(ns) 1s2在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为 增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。排序类别时间复杂度

温馨提示

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

评论

0/150

提交评论