Rumah > hujung hadapan web > tutorial js > Apakah Algoritma Isih Yang Digunakan oleh `Array.sort()` JavaScript?

Apakah Algoritma Isih Yang Digunakan oleh `Array.sort()` JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-24 16:07:15
asal
363 orang telah melayarinya

What Sorting Algorithm Does JavaScript's `Array.sort()` Use?

Algoritma Digunakan oleh Fungsi JavaScript Array.sort()

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan