Fungsi JavaScript Array#sort() ialah mekanisme pengisihan serba boleh yang menyokong pelbagai operasi pengisihan berdasarkan argumen yang disediakan dan fungsi. Tetapi apakah enjin yang digunakan oleh vanila, yang tidak mempunyai parameter?
Melihat lebih dekat pada kod sumber WebKit (digunakan oleh Chrome dan Safari), kami mendapati bahawa pilihan algoritma bergantung pada jenis tatasusunan:
Tatasusunan angka atau tatasusunan yang mengandungi jenis primitif: Tatasusunan ini diisih menggunakan fungsi C std::qsort, yang biasanya melaksanakan variasi quicksort (selalunya introsort).
Susun atur jenis bukan angka: Tatasusunan ini ditukar kepada rentetan dan diisih menggunakan mergesort (jika boleh untuk kestabilan) atau qsort (jika tidak).
Jenis lain (tidak bersebelahan tatasusunan dan tatasusunan bersekutu): WebKit menggunakan isihan pemilihan (isih min) atau, dalam kes tertentu, mengisih melalui pepohon AVL untuk jenis ini. Disebabkan dokumentasi yang tidak jelas, pengesanan laluan kod akan diperlukan untuk menentukan algoritma khusus yang digunakan untuk setiap jenis.
Terutamanya, kod tersebut mengandungi ulasan yang mencadangkan penggunaan isihan radix untuk menyusun tatasusunan bertali yang lebih pantas, tetapi ulasan ini menyerlahkan salah faham tentang kerumitan masa jalan jenis radix.
Atas ialah kandungan terperinci Apakah Algoritma Isih Yang Digunakan oleh `Array.sort()` JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!