1. 歸并排序算法的使用情景
歸并排序算法和快速排序算法是java.util.Arrays中使用的排序算。對于一般的基本數(shù)據(jù)類型,Arrays.sort函數(shù)使用雙軸快速排序算法,而對于對象類型使用歸并排序(準確的說使用的是TimSort排序算法,它是歸并排序的優(yōu)化版本)。這樣做的原因有兩點,第一個原因,歸并排序是穩(wěn)定的,而快速排序不是穩(wěn)定的。第二個原因,對于基本數(shù)據(jù)類型,排序的穩(wěn)定性意義不大,但對于復(fù)合數(shù)據(jù)類型(比如對象)排序的穩(wěn)定性就能幫助我們保持排序結(jié)果的某些性質(zhì)。
2. 自頂向下的歸并排序
自頂向下的排序算法就是把數(shù)組元素不斷的二分,直到子數(shù)組的元素個數(shù)為一個,因為這個時候子數(shù)組必定是已有序的,然后將兩個有序的序列合并成一個新的有序的序列,兩個新的有序序列又可以合并成另一個新的有序序列,以此類推,直到合并成一個有序的數(shù)組。
為了體現(xiàn)歸并的排序的穩(wěn)定性,我們的代碼使用java的泛型來實現(xiàn)對任意對象的排序。
延伸閱讀
我想了解如何學(xué)習(xí) |