Rumah > Artikel > pembangunan bahagian belakang > Isih pantas tatasusunan PHP vs. isihan cantum
Isih cepat ialah algoritma rekursif yang membahagikan tatasusunan kepada elemen yang lebih kecil dan elemen yang lebih besar dan mengisihnya secara rekursif, manakala isihan gabungan membahagikan secara rekursif tatasusunan kepada tatasusunan yang lebih kecil, mengisih setiap tatasusunan kecil, dan kemudian menggabungkannya kembali ke dalam tatasusunan asal. Kod yang dilaksanakan oleh PHP ialah: Isih pantas: Bahagikan tatasusunan kepada elemen yang lebih kecil dan lebih besar daripada nilai garis dasar, dan kemudian isi setiap bahagian secara rekursif. Isih Gabung: Bahagikan tatasusunan secara rekursif kepada tatasusunan yang lebih kecil, susun setiap tatasusunan yang lebih kecil, dan kemudian gabungkan tatasusunan yang lebih kecil yang diisih kembali ke tatasusunan asal.
Isih cepat tatasusunan PHP lwn. isihan cantum
Apakah itu isihan cepat dan isihan cantum?
Isih cepat dan isihan cantum ialah kedua-dua algoritma biasa digunakan untuk mengisih tatasusunan.
Pelaksanaan kod 是 Berikut ialah fungsi pengisihan dan penggabungan yang cepat dilaksanakan dengan PHP:
Penghapusan Pantas:function quickSort($arr) { if (count($arr) <= 1) { return $arr; } $pivot = $arr[0]; $left = []; $right = []; for ($i = 1; $i < count($arr); $i++) { if ($arr[$i] < $pivot) { $left[] = $arr[$i]; } else { $right[] = $arr[$i]; } } return array_merge(quickSort($left), [$pivot], quickSort($right)); }E
Pengisihan Gabungan:
Kes Penyisihan Sampingan Array yang tidak teratur daripada integer.Menggunakan quicksort:
function mergeSort($arr) { $length = count($arr); if ($length <= 1) { return $arr; } $mid = floor($length / 2); $left = array_slice($arr, 0, $mid); $right = array_slice($arr, $mid); return merge(mergeSort($left), mergeSort($right)); } function merge($left, $right) { $result = []; $lIndex = $rIndex = 0; while ($lIndex < count($left) && $rIndex < count($right)) { if ($left[$lIndex] < $right[$rIndex]) { $result[] = $left[$lIndex++]; } else { $result[] = $right[$rIndex++]; } } while ($lIndex < count($left)) { $result[] = $left[$lIndex++]; } while ($rIndex < count($right)) { $result[] = $right[$rIndex++]; } return $result; }
Output: $sortedArray = quickSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r($sortedArray);
Menggunakan merge sort:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Output: [5, 2, 8, 3, 1, 9, 4, 7, 6]
$sortedArray = mergeSort([5, 2, 8, 3, 1, 9, 4, 7, 6]); print_r($sortedArray);
Atas ialah kandungan terperinci Isih pantas tatasusunan PHP vs. isihan cantum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!