1. 程式人生 > 實用技巧 >Collections.sort()使用了什麼排序?

Collections.sort()使用了什麼排序?

Collections.sort()點選進入:

點選sort()進入:

如果沒有指定Comparator 進入Arrays.sort:

  • 如果Comparator為null,則進入sort方法

  • 看是否設定了LegacyMergeSort.userRequested為true 如果設定了則使用歸併排序,如果未設定則使用TimSort(優化歸併排序)

  • LegacyMergeSort.userRequested==true,採用legacyMergeSort

  • 否則採用ComparableTimSort

ComparableTimSort是改進後的歸併排序,對歸併排序在已經反向排好序的輸入時表現為O(n^2)的特點做了特別優化。對已經正向排好序的輸入減少回溯。對兩種情況(一會升序,一會降序)的輸入處理比較好(摘自百度百科)。