冒泡排序
交换排序的一种,稳定,时间复杂度O(n²)
思想:位置规则遵循前小后大,如果不符合就交换,每相邻两个元素比较,每次往后一位比较
例如:位置1和位置2接着位置2和位置3...位置3和位置4....
快速排序
交换排序的一种,不稳定,最坏时间复杂度O(n²);平均时间复杂度O(nlog₂n)
思想:根据基准进行比较,不符合则交换
-- 一趟排序包含多次比较和多次交换
-- 一趟排序后,左边元素都小于基准,右边元素都大于基准
注意:输入序列约有序,排序性能越差。最坏的情况是初始序列已经有序,用快速排序导致最坏时间复杂度
归并排序
归并排序,稳定,平均时间复杂度O(nlog₂n),空间复杂度O(n)
思想:把序列划分为n个,两两合并,重复操作,通过增加一倍的空间的合并时候不需要做交换,直接插入
排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 稳定性 |
直接插入排序 | O(n²) | O(n²) | O(1) | 稳定 |
冒泡排序 | O(n²) | O(n²) | O(1) | 稳定 |
直接选择排序 | O(n²) | O(n²) | O(1) | 不稳定 |
快速选择排序 | O(nlog₂^n) | O(n²) | O(log₂^n) | 不稳定 |
堆排序 | O(nlog₂^n) | O(nlog₂^n) | O(1) | 不稳定 |
二路归并排序 | O(nlog₂^n) | O(nlog₂^n) | O(n) | 稳定 |
----待续