码迷,mamicode.com
首页 > 编程语言 > 详细

简单的三种排序

时间:2016-03-01 23:57:49      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:

桶排序:思路是,申请足够数量的空间去存放可能出现的值,循环所有的值,把对应值得地方进行标记,然后依据值得大小输出排序的顺序。

例子:2 5 8 6 1 4

申请数组a[8]

出现一个数,a[那个数] = 1;

最后循环数组,值为1的输出即可。

 

冒泡排序:思路是,不停的比较前后两个数,如果顺序不对就交换,每次都在大的数放在后面,每一次循环就能把最大的数冒出来。

例子:2 5 8 6 1 4

比较 2 5,正常,不动

比较 5 8,正常,不动

比较 8 6,不对,交换

比较 8 1,不对,交换

比较 8 4,不对,交换

最后8就冒出来了,多次循环之后就能排序完成,值得注意的是,每次循环可以少循环一个数,因为那个数已经冒泡出来了,比如下一次就不用和8比较了。

 

快速排序:思路是,找一个标志数放置在首位,然后根据这个标志数从首末两头寻找,找到一个大于标志数,一个小于标志数的两个数,然后交换两个数,最后当碰头时,碰头数和标志数交换位置,然后此时在比较标志数的左边序列利用上面的方法再来一次,右边也一样

例子:2 5 8 6 1 4

2为标志数

从后头4开始,我们向前找,找到了1比2小

从前头2开始,我们向后找,找到了5比2大

交换5和1

原序列变成  2 1 8 6 5 4

从后头5开始,我们向前找,找到了1比2小(碰头了)

交换 1 和 2

原序列变成  1 2 8 6 5 4

然后是2左边的序列已经齐了

2右边的序列利用之前的方法进行排序即可

 

总结:桶排序时间复杂度O(N+M),冒泡排序O(N^2),快速排序O(N logN),实际之中我经常就是一个sort()就代替所有的方法,没有理解其中的排序算法,所以有时候方便就会造成不懂的漏洞。

简单的三种排序

标签:

原文地址:http://www.cnblogs.com/linkstar/p/5233206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!