简单的三种排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的三种排序相关的知识,希望对你有一定的参考价值。

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

例子: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()就代替所有的方法,没有理解其中的排序算法,所以有时候方便就会造成不懂的漏洞。

以上是关于简单的三种排序的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序的三种优化

python常见的三种列表排序算法分别是啥?

排序--Bubble的三种优化

java代码[No.4]—快速排序算法的三种方式及其优化

java中数组的三种排序算法

链表的三种插入排序+冒泡排序