Bagaimana untuk melaksanakan algoritma pengisihan dan algoritma carian dalam PHP?

WBOY
Lepaskan: 2023-05-20 16:34:02
asal
1267 orang telah melayarinya

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

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

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!

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!