JavaScript Array#sort() 函數是一種通用的排序機制,支援基於提供的參數的各種排序操作和功能。但是沒有參數的普通排序採用什麼引擎呢?
仔細查看WebKit 原始碼(Chrome 和Safari 使用),我們發現演算法的選擇取決於排序的類型數組:
數字數組或包含基本類型的數組: 這些陣列使用C std::qsort 函數進行排序,該函數通常實現快速排序的變體(通常是內部排序)。
非數字類型的連續數組:這些數組將轉換為字串並使用歸併排序(如果可能的話)或 qsort(否則)進行排序。
其他類型(非連續數組和關聯數組) arrays): WebKit 使用選擇排序(最小排序),或者在某些情況下,透過 AVL 樹對這些類型進行排序。由於文件不明確,有必要追蹤程式碼路徑來確定每種類型使用的特定演算法。
值得注意的是,程式碼包含一條註釋,建議使用基數排序來更快地對字串化數組進行排序,但是此評論強調了對基數排序運行時複雜性的誤解。
以上是JavaScript 的 Array.sort() 使用什麼排序演算法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!