前言
在
pdqsort(I)一文中,我介绍了三种常见的排序算法(插入排序、快速排序、堆排序)的排序过程和时间复杂度,在这一文,我将讲解这三种排序算法在实际应用场景中的时间效率。
在待排序序列大小随机的情况下,根据序列的长短,三个排序算法的效果如下图所示:
由图可知,在序列长度较短时,在我们印象中时间复杂度通常较高的插入排序的时间消耗反而是最小的。 在序列长度中等及较长时,插入排序的时间消耗是最小的,其次是堆排序。
在待排序序列是有序的情况下,根据序列的长短,三个排序算法的效果如下图所示:
由图可知,在这种情况下,插入排序的时间消耗都是最小的,堆排序其次,最慢的是快速排序。
由此可知,在实际应用场景中:
- 所有短序列和元素有序的情况下,插入排序的性能最好
- 在大部分情况下,快排具有较好的综合性能
- 几乎在任何情况下,堆排序的表现都很稳定
那如何设计出更好的排序算法呢,我们可不可以根据不同的序列采用不同的排序算法?