Collections.sort()使用了什麼排序?
阿新 • • 發佈:2020-10-13
Collections.sort()點選進入:
點選sort()進入:
如果沒有指定Comparator 進入Arrays.sort:
-
如果Comparator為null,則進入sort方法
-
看是否設定了LegacyMergeSort.userRequested為true 如果設定了則使用歸併排序,如果未設定則使用TimSort(優化歸併排序)
-
當
LegacyMergeSort.userRequested==true
,採用legacyMergeSort -
否則採用ComparableTimSort
ComparableTimSort是改進後的歸併排序,對歸併排序在已經反向排好序的輸入時表現為O(n^2)的特點做了特別優化。對已經正向排好序的輸入減少回溯。對兩種情況(一會升序,一會降序)的輸入處理比較好(摘自百度百科)。