Isih pantas tatasusunan PHP vs. isihan cantum

WBOY
Lepaskan: 2024-04-26 12:45:02
asal
1098 orang telah melayarinya

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));
}
Salin selepas log masuk
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;
}
Salin selepas log masuk

Output:

$sortedArray = quickSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r($sortedArray);
Salin selepas log masuk
Menggunakan merge sort:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
Salin selepas log masuk

Output: [5, 2, 8, 3, 1, 9, 4, 7, 6]

$sortedArray = mergeSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r($sortedArray);
Salin selepas log masuk

Atas ialah kandungan terperinci Isih pantas tatasusunan PHP vs. isihan cantum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!