常用排序算法的时间复杂度
时间: 2024-09-04 18:03:07 浏览: 135
php 常用算法和时间复杂度
5星 · 资源好评率100%
常见的排序算法通常按照它们处理数据对数级增长的能力分为三类:
1. **最好情况**(Best Case)时间复杂度:
- 冒泡排序、插入排序:O(n)。当输入数组已经是有序的情况下,只需要遍历一次。
- 计数排序、桶排序、基数排序(适用于特定范围的数据):理论上可以达到线性的速度,为O(n)。
2. **平均情况**(Average Case)时间复杂度:
- 冒泡排序、插入排序:O(n^2)。对于一般无序数组,需要多次遍历。
- 快速排序:平均下为O(n log n),通过分治策略实现,最理想时分割相等。
- 归并排序:稳定且始终为O(n log n),但需要额外空间存储临时结果。
3. **最坏情况**(Worst Case)时间复杂度:
- 冒泡排序、插入排序:O(n^2)。无论输入如何,都可能出现最坏的情况。
- 快速排序:O(n^2)。当输入数组已经完全逆序时,每次划分只减少一个元素。
- 堆排序:也是O(n log n),但不稳定,因为堆化过程可能导致相对顺序改变。
4. **特殊情况**(如稳定性):
- 稳定排序(如冒泡排序、插入排序、归并排序):如果两个相等的元素在排序前后的相对位置不变,则称为稳定排序。
- 非稳定排序(如快速排序、堆排序):相等元素的相对顺序可能会改变。
阅读全文