快排是最好的,其次是归并和希尔,堆排序在数据量很大时效果明显
快排:
一般情况时排序速度最块,但是不稳定,当有序时,反而不好;
归并排序:
稳定,适合大规模的排序,Array.sort()使用的就是归并排序;
堆排序:
适合数据量很大的情况,例如:大数据处理的一个例子:找出一千万个数中最小的前一百个数;
思路:建立一百个节点的大顶堆,首先将前一百个数放入堆中,之后每放入一个数就删除一个堆顶元素,最后剩下的就是最小的一百个数。当然也可以分区处理,感兴趣的小伙伴可以网上搜一下大神们的帖子。
希尔排序:
对增量的标准没有较为满意的答案,增量对性能会有影响;
归并排序:
效率非常不错,在数据规模较大的情况下,比希尔排序和堆排序要好;
稳定排序
插入排序,冒泡排序,二叉树排序,归并排序
不稳定排序
**快速排序(快),**希尔排序(些),**选择排序(选),**堆排序(一堆)。
内排序:所有排序操作都在内存中完成;
外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;