Perbandingan kecekapan algoritma untuk mencari elemen tertentu dalam tatasusunan PHP

PHPz
Lepaskan: 2024-05-01 11:03:01
asal
551 orang telah melayarinya

Perbandingan kecekapan algoritma carian elemen tatasusunan PHP: carian linear: kecekapan dalam tatasusunan tidak tertib ialah O(n); ), tanpa mengira jenis tatasusunan.

Perbandingan kecekapan algoritma untuk mencari elemen tertentu dalam tatasusunan PHP

Perbandingan Kecekapan Algoritma untuk Mencari Elemen Khusus dalam Tatasusunan PHP

Mencari elemen khusus dalam tatasusunan ialah tugas biasa dalam PHP dan terdapat pelbagai algoritma yang tersedia untuk tujuan ini. Artikel ini akan membandingkan kecekapan tiga algoritma yang paling biasa:

1. Carian linear

function linearSearch($arr, $target) {
  for ($i = 0; $i < count($arr); $i++) {
    if ($arr[$i] === $target) {
      return $i;
    }
  }

  return -1;
}
Salin selepas log masuk

2 menggunakan pasangan nilai kunci untuk menyimpan data, carian boleh menjadi lebih pantas dengan ketara.

function binarySearch($arr, $target) {
  $left = 0;
  $right = count($arr) - 1;

  while ($left <= $right) {
    $mid = floor(($left + $right) / 2);

    if ($arr[$mid] === $target) {
      return $mid;
    } else if ($arr[$mid] < $target) {
      $left = $mid + 1;
    } else {
      $right = $mid - 1;
    }
  }

  return -1;
}
Salin selepas log masuk

Kes praktikal

Kami menggunakan saiz tatasusunan yang berbeza untuk ujian, tatasusunan tidak tersusun dan tatasusunan tersusun yang mengandungi unsur rawak. Keputusannya adalah seperti berikut:

Algoritma

Tatasusunan tidak tertib

Tatasusunan tertibCarian linearO(n)O(n)Carian binarijadual cincang prestasi carian tersusun terbaik dan masa yang kompleks darjah ialah O(log n), manakala jadual cincang adalah yang paling cekap dalam semua kes, dan kerumitan masa sentiasa O(1).
O( log n) O(log n)
O(1) O(1)
Kesimpulan

Atas ialah kandungan terperinci Perbandingan kecekapan algoritma untuk mencari elemen tertentu dalam tatasusunan PHP. 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