排序对于处理大型的数据时,是一件比较麻烦的事,特别是对于海量数据的排序,这时选择合适的排序算法是十分重要的,比如冒泡和选择排序来说,它们的时间复杂度都是O(n2),它的效率对于百条以内的数据是十分有效的,但是一旦数据达到了上千条,甚至上万条,百万条。这时还使用此类排序算法显然是很不明智的。
那么,我们应当选择何种排序算法呢?数据结构中给我们提供了很多的排序算法,我们该使用哪一种呢?我们在这里做一个简单的分析,看哪种排序更加适合。下面给出了一些常见的排序算法及其时间复杂度。
插入排序 O(n2)
冒泡排序 O(n2)
选择排序 O(n2)
快速排序 O(n log n)
堆排序 O(n log n)
归并排序 O(n log n)
基数排序 O(n)
希尔排序 O(n1.25)
插入和冒泡、选择我们就不做考虑了,现在主要分析后面的几种排序算法。
快速排序是所有排序算法中最高效的一种。它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。这是一种先进的思想,也是它高效的原因。因为在排序算法中,算法的高效与否与列表中数字间的比较次数有直接的关系,而"保证列表的前半部分都小于后半部分