Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan algoritma pengisihan dan algoritma carian dalam PHP?

Bagaimana untuk melaksanakan algoritma pengisihan dan algoritma carian dalam PHP?

WBOY
WBOYasal
2023-05-20 16:32:021284semak imbas

Sebagai bahasa pengaturcaraan yang biasa digunakan, PHP mempunyai banyak algoritma pengisihan dan carian terbina dalam untuk membantu pembangun memproses sejumlah besar data dengan lebih cekap. Artikel ini akan memperkenalkan beberapa algoritma pengisihan biasa dan algoritma carian serta menerangkan cara menggunakannya dalam PHP.

1. Algoritma pengisihan

  1. Isih gelembung

Isih buih ialah algoritma pengisihan asas dan kedudukan mereka ditukar mengikut perhubungan saiz untuk mencapai tujuan pengisihan. Kaedah pelaksanaan khusus adalah seperti berikut:

function bubbleSort($arr) {
    $len = count($arr);

    for ($i = 0; $i < $len - 1; $i++) {
        for ($j = 0; $j < $len - $i - 1; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $temp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $temp;
            }
        }
    }

    return $arr;
}
  1. Isih cepat

Isih cepat ialah algoritma pengisihan yang biasa digunakan Prinsipnya ialah memilih nilai penanda aras dan menyusun tatasusunan kepada Ia dibahagikan kepada dua bahagian yang lebih kecil daripada nilai penanda aras dan lebih besar daripada nilai penanda aras, dan kemudian secara rekursif melakukan pengisihan pantas pada kedua-dua bahagian ini, dan akhirnya menggabungkan hasil untuk melengkapkan pengisihan. Kaedah pelaksanaan khusus adalah seperti berikut:

function quickSort($arr) {
    if (count($arr) < 2) {
        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));
}
  1. Isih gabung

Isih gabung ialah algoritma pengisihan klasik Prinsipnya ialah membahagikan tatasusunan secara berterusan kepada yang lebih kecil satu. Subarray sehingga setiap subarray hanya mempunyai satu elemen, kemudian gabungkan dua subarray bersebelahan dan isikannya mengikut perhubungan saiz, ulangi proses ini sehingga keseluruhan tatasusunan diisih. Kaedah pelaksanaan khusus adalah seperti berikut:

function mergeSort($arr) {
    if (count($arr) < 2) {
        return $arr;
    }

    $mid = floor(count($arr) / 2);
    $left = array_slice($arr, 0, $mid);
    $right = array_slice($arr, $mid);

    return merge(mergeSort($left), mergeSort($right));
}

function merge($left, $right) {
    $result = [];

    while (count($left) && count($right)) {
        if ($left[0] <= $right[0]) {
            $result[] = array_shift($left);
        } else {
            $result[] = array_shift($right);
        }
    }

    while (count($left)) {
        $result[] = array_shift($left);
    }

    while (count($right)) {
        $result[] = array_shift($right);
    }

    return $result;
}

2. Algoritma carian

  1. Carian berurutan

Carian berurutan juga dipanggil carian linear untuk mencari dari Bermula dari elemen pertama tatasusunan, setiap elemen dibandingkan satu demi satu untuk melihat sama ada ia sama dengan nilai sasaran, sehingga nilai sasaran ditemui atau penghujung tatasusunan dicari. Kaedah pelaksanaan khusus adalah seperti berikut:

function linearSearch($arr, $target) {
    $len = count($arr);

    for ($i = 0; $i < $len; $i++) {
        if ($arr[$i] == $target) {
            return $i;
        }
    }

    return -1;
}
  1. Carian binari

Carian binari juga dipanggil carian separuh Prinsipnya adalah untuk mengurangkan julat carian ke kiri dan kanan secara berterusan untuk tatasusunan tertib, setiap kali mencari nilai tengah tatasusunan, jika nilai tengah lebih besar daripada nilai sasaran, teruskan mencari di separuh kiri, jika tidak, teruskan mencari di separuh kanan sehingga nilai sasaran ditemui atau julat carian kosong. Kaedah pelaksanaan khusus adalah seperti berikut:

function binarySearch($arr, $target) {
    $low = 0;
    $high = count($arr) - 1;

    while ($low <= $high) {
        $mid = floor(($low + $high) / 2);
        if ($arr[$mid] < $target) {
            $low = $mid + 1;
        } else if ($arr[$mid] > $target) {
            $high = $mid - 1;
        } else {
            return $mid;
        }
    }

    return -1;
}

3. Ringkasan

Artikel ini memperkenalkan algoritma pengisihan biasa dan algoritma carian, dan menyediakan kod sampel untuk melaksanakan algoritma ini dalam PHP. Walaupun PHP mempunyai banyak fungsi pengisihan dan carian terbina dalam, memahami algoritma ini boleh membantu memperdalam pemahaman anda tentang struktur data dan algoritma serta meningkatkan kemahiran pengaturcaraan anda. Pada masa yang sama, dalam pembangunan sebenar, kita boleh memilih algoritma yang paling sesuai mengikut keperluan khusus untuk meningkatkan kecekapan dan kualiti kod.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma pengisihan dan algoritma carian dalam PHP?. 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