Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Cekap Mencari Nilai Terdekat dalam Tatasusunan Tertib?

Bagaimana untuk Cekap Mencari Nilai Terdekat dalam Tatasusunan Tertib?

Barbara Streisand
Barbara Streisandasal
2024-11-25 18:06:11294semak imbas

How to Efficiently Find the Closest Value in an Ordered Array?

Mencari Nilai Terhampir dalam Tatasusunan

Dalam pemprosesan data, mencari nilai padanan terdekat dalam tatasusunan selalunya penting untuk pelbagai aplikasi. Memandangkan nilai sasaran dan tatasusunan tersusun, bagaimanakah kita boleh mengesan elemen yang paling hampir dengan sasaran dengan cekap?

Penyelesaian:

Untuk mencari nilai terdekat dalam tatasusunan, kita boleh lelaran melalui setiap elemen dalam tatasusunan dan mengira perbezaan antara nilai sasaran dan setiap elemen. Elemen dengan perbezaan terkecil ialah nilai padanan yang paling hampir. Berikut ialah fungsi PHP untuk tugasan ini:

function getClosest($search, $arr) {
   $closest = null;
   foreach ($arr as $item) {
      if ($closest === null || abs($search - $closest) > abs($item - $search)) {
         $closest = $item;
      }
   }
   return $closest;
}

Fungsi ini mengambil dua parameter: nilai sasaran untuk dicari dan tatasusunan nombor untuk dicari di dalamnya. Ia mengira perbezaan mutlak antara nilai sasaran dan setiap elemen dalam tatasusunan. Elemen dengan perbezaan mutlak terkecil disimpan dalam pembolehubah $closst dan akhirnya dikembalikan sebagai hasilnya.

Penggunaan:

Pertimbangkan tatasusunan berikut:

array(0, 5, 10, 11, 12, 20)

Apabila mencari dengan nilai sasaran 0, fungsi akan mengembalikan 0. Untuk nilai sasaran 3, fungsi akan kembali 5. Begitu juga, untuk nilai sasaran 14, fungsi akan mengembalikan 12.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Nilai Terdekat dalam Tatasusunan Tertib?. 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