Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Isih pantas tatasusunan PHP vs. isihan cantum

Isih pantas tatasusunan PHP vs. isihan cantum

WBOY
WBOYasal
2024-04-26 12:45:021135semak imbas

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.

PHP 数组快排 vs. 归并排序

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.

  • Isih Pantas: Bahagikan tatasusunan kepada dua bahagian, satu mengandungi unsur yang lebih kecil dan satu lagi mengandungi unsur yang lebih besar, dan kemudian susun setiap bahagian secara rekursif.
  • Gabung isihan: Pisah tatasusunan secara rekursif kepada tatasusunan yang lebih kecil, susun setiap tatasusunan yang lebih kecil, dan kemudian cantumkan tatasusunan yang lebih kecil yang diisih kembali ke tatasusunan asal.

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!

Kenyataan:
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