Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Analisis algoritma PHP: Bagaimana untuk menggunakan algoritma carian binari untuk mencari elemen dalam tatasusunan tertib dengan cepat?

Analisis algoritma PHP: Bagaimana untuk menggunakan algoritma carian binari untuk mencari elemen dalam tatasusunan tertib dengan cepat?

王林
王林asal
2023-09-19 13:14:01880semak imbas

Analisis algoritma PHP: Bagaimana untuk menggunakan algoritma carian binari untuk mencari elemen dalam tatasusunan tertib dengan cepat?

Analisis algoritma PHP: Bagaimana untuk menggunakan algoritma carian binari untuk mencari elemen dalam tatasusunan tertib dengan cepat?

Ikhtisar:
Algoritma carian binari ialah algoritma carian yang cekap, yang sesuai untuk mencari elemen tertentu dalam tatasusunan tersusun. Artikel ini akan memperkenalkan prinsip algoritma carian binari secara terperinci dan memberikan contoh kod PHP.

  1. Prinsip:
    Algoritma carian binari dengan cepat mencari elemen sasaran dengan berulang kali mengurangkan julat carian sebanyak separuh. Prosesnya adalah seperti berikut:
  2. Pertama, sempitkan julat carian ke permulaan dan akhir tatasusunan
  3. Kemudian, hitung indeks elemen tengah dan bandingkan dengan elemen sasaran
  4. Jika elemen sasaran adalah sama kepada elemen tengah, kembalikan kejayaan carian terus ;
  5. Jika elemen sasaran lebih kecil daripada elemen tengah, ini bermakna elemen sasaran berada di sebelah kiri elemen tengah, dan julat carian akan dikecilkan ke kiri separuh;
  6. Jika elemen sasaran lebih besar daripada elemen tengah, ia bermakna elemen sasaran berada di sebelah kanan elemen tengah, dan carian akan Julat dikurangkan kepada separuh kanan
  7. Ulang perkara di atas langkah sehingga elemen sasaran ditemui, atau julat carian kosong, menunjukkan bahawa carian gagal.
  8. Contoh kod:
    Berikut ialah contoh kod carian binari yang dilaksanakan dalam PHP:
function binarySearch($arr, $target) {
    $left = 0;                              // 查找范围的左边界
    $right = count($arr) - 1;               // 查找范围的右边界

    while ($left <= $right) {
        $mid = floor(($left + $right) / 2); // 计算中间元素的索引

        if ($arr[$mid] == $target) {
            return $mid;                    // 找到目标元素,返回索引
        } elseif ($arr[$mid] < $target) {
            $left = $mid + 1;               // 目标元素在中间元素的右侧
        } else {
            $right = $mid - 1;              // 目标元素在中间元素的左侧
        }
    }

    return -1;                              // 查找失败,返回-1
}

// 示例用法
$sortedArray = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
$targetElement = 11;
$result = binarySearch($sortedArray, $targetElement);

if ($result == -1) {
    echo "目标元素 $targetElement 不存在于数组中。";
} else {
    echo "目标元素 $targetElement 的索引是 $result。";
}

Dalam contoh di atas, kami menentukan dua pembolehubah bernama binarySearch的函数来实现二分查找。函数接受两个参数:有序数组$arr和目标元素$target。函数运行的过程中,使用了$left$right untuk mewakili sempadan kiri dan kanan julat carian, dengan melaraskan secara berterusan Sempadan sempitkan skop carian dan akhirnya cari elemen sasaran atau tentukan ia tidak wujud.

Akhir sekali, kami menentukan contoh penggunaan yang menunjukkan cara menggunakan algoritma carian binari untuk mencari elemen tertentu dalam tatasusunan tersusun dan mengeluarkan hasilnya.

Kesimpulan:
Algoritma carian binari ialah algoritma carian yang cekap, sesuai untuk mencari elemen tertentu dalam tatasusunan tersusun. Dengan terus menyempitkan skop carian, carian binari boleh mengesan elemen sasaran dengan cepat. Dalam pembangunan sebenar, kami boleh menggabungkan algoritma carian binari untuk reka bentuk kod mengikut keperluan untuk meningkatkan kecekapan carian.

【Bilangan perkataan: 451 patah perkataan】

Atas ialah kandungan terperinci Analisis algoritma PHP: Bagaimana untuk menggunakan algoritma carian binari untuk mencari elemen dalam tatasusunan tertib dengan cepat?. 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