1 / 8
文档名称:

十大经典排序算法.docx

格式:docx   大小:14KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

十大经典排序算法.docx

上传人:mama1 2022/4/13 文件大小:14 KB

下载得到文件列表

十大经典排序算法.docx

相关文档

文档介绍

文档介绍:十大经典排序算法
.1 算法分类
十种常见排序算法可以分为两大类:
?比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
?非有序结果。具体算法描述如下:
?初始状态:无序区为R[1..n],有序区为空;
?第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
?n-1趟结束,数组有序化了。
动图演示

代码实现
?

算法分析
表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。
3、插入排序(Insertion Sort)
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
?从第一个元素开始,该元素可以认为已经被排序;
?取出下一个元素,在已经排序的元素序列中从后向前扫描;
?如果该元素(已排序)大于新元素,将该元素移到下一位置;
?重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
?将新元素插入到该位置后;?重复步骤2~5。
动图演示

代码实现
?


算法分析
插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
4、希尔排序(Shell Sort)
1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。
算法描述
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:?选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
?按增量序列个数k,对序列进行k 趟排序;
?每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
动图演示