首页 > 其他 > 详细

常见排序方法

时间:2014-03-07 13:19:20      阅读:421      评论:0      收藏:0      [点我收藏+]

比较常用的排序方法(升序):

冒泡排序:最常用的排序方法。大体思路就是每次选出一个最大值,第二次选出次大值,基本上就是两个for循环。

鸡尾酒排序:冒泡排序方法的变种,鸡尾酒排序,待排序数组首先从0->n-1找出最大值,然后n-2->0找出最小值,然后再从1->n-2找次大值……依次类推……一个while循环,里面套两个for循环即可。

奇偶排序:也是冒泡排序的变种。一个while循环,里面两个for循环,但是一个for循环从0开始,一个从1开始,每次加2,比较相邻两个数值大小。

 

快速排序:是分之思想的一种体现。对于一个待排序队列,首先选择一个基准,扫描数据,大于这个基准数据的元素放在右侧,小于的放在左侧,然后左侧和右侧的数据又是待排序队列,再分别选择基准……递归下去,知道全部都是有序的。

 

插入排序:是一种比较直观的排序方法,从待排序队列中构建有序队列,把剩余的待排序数据插入到有序队列中。

希尔排序:分步长排序法,对相隔步长的数据分别进行排序,然后减小步长,直至步长为1,主要可以减少数据的移动次数。

 

选择排序:选择一个最大元素放入队尾,然后从剩余的元素中选择最大的放入队尾的前一位置,直到待排序数组中只有一个元素为止。

堆排序算法:选择排序的一种,不停的构建大(小)顶堆,然后取出顶,得到有序序列。

 

归并排序:也是典型的分治法思想的应用,是把两个有序的序列合并成一个有序序列。其中这两个有序序列分别是有两个有序序列合并而成。

 

基数排序:是一种比较型整数排序算法,把待比较的数值按照位数切割成不同的数值,从权值小的位开始比较大小,每个位数分别比较。

分类 排序方法 稳定性 平均时间复杂度
交换排序 冒泡排序 稳定 O(n2)
鸡尾酒排序 稳定 O(n2)
奇偶排序 稳定 O(n2)
快速排序 不稳定 O(nlogn)
插入排序 直接插入排序 稳定 O(n2)
希尔排序 不稳定 O(n1.25)
选择排序 选择排序 不稳定 O(n2)
堆排序 不稳定 O(nlogn)
归并排序 归并排序 稳定 O(nlogn)
分布排序 基数排序 稳定 O(nd)d为位数

还有一种比较好用的排序方法是二叉树排序法,是插入排序的一种,平均时间复杂度也不高,而且还能够方便的动态查找。在某些动态查找应用中可以很方便的应用。关于二叉树排序方法可以参考如下链接,我在后续的文章中也会具体写二叉排序树的相关操作。

http://www.cnblogs.com/sdlypyzq/archive/2011/09/10/2172937.html

二叉查找树

常见排序方法,布布扣,bubuko.com

常见排序方法

原文:http://www.cnblogs.com/havePassed/p/3585375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!