为啥会存在那么多排序算法

排序方式有很多种:
选择排序:遍历次数多。空间利用小。
插入排序:遍历次数随机比选择排序少点,空间利用小。、
希尔排序:插入排序的变种,在面对相对混乱的数组的时候比插入排序快,相对顺的数组的时候比插入排序慢。空间利用小。

归并排序:利用了递归,分治,空间利用大,效率与前三个排序是不同级别,NlogN级别。稳定。
堆排序:取最大值最小值比较快,根据下标选取数字比较慢,结构最复杂。
快速排序:跟归并差不多,分治,空间利用大。效率也是NlogN级别。不稳定。
三向切分快速排序:跟归并差不多,分治,空间利用大。效率也是NlogN级别。比快速排序稍微稳定些,更加复杂。

所有算法都围绕几个方面展开:
1效率。
2所用空间。
3所用资源稳定性。
4适用规模。

【为啥会存在那么多排序算法】 然后根据自己实际需求选择合适自己的算法


■网友
正是因为不存在普遍意义上的最优排序算法,才会出现针对不同情况的各种算法,例如快排,虽然算法很优秀,但是在元素有序的情况下退化成n^2,这也是为什么STL里sort函数在取样之后判断假如该序列基本有序,就采用堆排来代替快排
■网友
看要排序的数量取优。有的耗时多的算法,但是简单。有的很难去理解的算法,但是速度快。


    推荐阅读