1.時間復雜度為O(n^2)排序的穩定性:原序列中相同的值,在排好順序之后,能夠保證原來的相同的值相對順序保持不變。在一個算法中,如果所有相同值,在排完序之后,值的順序不會被打亂,那么這個算法就是穩定的。如果會被打亂,那么這個排序就不具備穩定性。 如果在相等情況下也進行交換,那么冒泡排序就不是穩定的了。 冒泡排序可以實現為穩定的,插入排序可以實現為穩定的,選擇排序不能實現穩定的算法。
2.時間復雜度O(nlogn)算法。歸並排序可以做到穩定性,遇到相等的情況下拷貝左邊的,保證右邊的想等值不會跑到右邊就可以做到穩定性。快速排序不能實現穩定性。堆排序做不到穩定性。
3.工程中的綜合排序算法。
(1)在工程中,會先判斷數組中的值是基礎類型(基礎類型會用快排)還是對象類型(就需要用到比較器,使用歸並排序),但是如果數組很短,不選選擇快排,也不會選擇歸並,會直接用插入排序。
4.有關排序問題的補充:
(1)歸並排序的額外空間復雜度可以變成O(1),但是非常難。
5.認識比較器的使用。