各种排序算法的比较与总结
排序算法是算法中一种最为基础、普遍的算法,在实际生活中应用广泛。针对不同的数据类型,特点,选择合适的排序的算法能够获得很高的程序效率。经过这几天对各个排序算法的学习,复习,现在对其进行比较和总结。
常见的10种排序算法详见:
各种排序算法的比较
排序算法 | 时间复杂度 | 空间复杂度 | 是否稳定 |
---|---|---|---|
快速排序 | nlogn | logn | 否 |
插入排序 | n^2 | 1 | 是 |
归并排序 | nlogn | n | 是 |
冒泡排序 | n^2 | 1 | 是 |
选择排序 | n^2 | 1 | 否 |
堆排序 | nlogn | 1 | 否 |
希尔排序 | nlogn | 1 | 否 |
计数排序 | n+k | n+k | 是 |
桶排序 | n | k | 是 |
基数排序 | n*k | n | 否 |
计数排序和桶排序中k为序列长度
基数排序中的k为特征个数
排序算法的稳定性:
设待排序列中存在相同元素a1和a2,(a1=a2),且a1在a2前,若经过排序后a1仍在a2前,则称该排序算法是稳定的,反之,则称为不稳定的。
根据具体数据要求选择合适的方法,能够事半功倍,大多数情况下都是考虑时间复杂度。比较排序算法时间复杂度受到排序下限O(nlogn)的影响,线性排序算法基本都是O(n),但线性排序算法用空间换时间,空间复杂度也对应比比较排序算法要大。
在实际应用中,应具体情况具体分析,选择代价最小的排序算法。