Semasa proses operasi tatasusunan, kadangkala perlu mendapatkan nilai perantaraan dalam tatasusunan, seperti median tatasusunan. PHP ialah bahasa yang sangat fleksibel dan boleh menggunakan pelbagai kaedah untuk mendapatkan nilai perantaraan tatasusunan. Dalam artikel ini, kami akan memperkenalkan beberapa cara untuk mendapatkan nilai perantaraan tatasusunan.
Kaedah 1: Ambil median selepas mengisih
Kaedah ini agak mudah Anda hanya perlu mengisih tatasusunan dan kemudian mengambil nilai tengah. Walau bagaimanapun, kaedah ini mempunyai kelemahan yang jelas, iaitu, kerumitan masa pengisihan ialah O(nlogn). Apabila n besar, kelajuannya agak perlahan.
PHP menyediakan fungsi sort() yang boleh mengisih tatasusunan dan kita boleh menggunakan fungsi ini untuk mencapainya.
Contoh kod:
function get_median($arr) { sort($arr); $count = count($arr); $middle = floor(($count - 1) / 2); if ($count % 2 == 0) { $median = ($arr[$middle] + $arr[$middle + 1]) / 2; } else { $median = $arr[$middle]; } return $median; }
Kaedah 2: Gunakan fungsi tatasusunan untuk mencari median
PHP menyediakan beberapa fungsi tatasusunan yang boleh kita gunakan untuk mengira median tatasusunan nilai pertengahan. Kaedah khusus ialah menggunakan fungsi count() terlebih dahulu untuk mendapatkan panjang tatasusunan, kemudian gunakan fungsi array_slice() untuk mengeluarkan segmen tengah daripada tatasusunan, dan akhirnya gunakan fungsi array_sum() untuk menjumlahkannya, dan kemudian bahagikannya dengan panjang. Kaedah ini lebih mudah dan cepat.
Contoh kod:
function get_median($arr) { sort($arr); $count = count($arr); $middle = floor(($count - 1) / 2); $median = ($count % 2 == 0) ? (array_sum(array_slice($arr, $middle, 2)) / 2) : $arr[$middle]; return $median; }
Kaedah 3: Algoritma pemilihan pantas
Kedua-dua kaedah di atas memerlukan pengisihan tatasusunan, jadi kerumitan masa adalah agak tinggi. Sebenarnya terdapat kaedah yang dipanggil QuickSelect yang boleh mencari median tanpa mengisih. Algoritma pemilihan pantas mempunyai banyak persamaan dengan algoritma isihan cepat, tetapi ia hanya memerlukan sebahagian daripada isihan pantas, jadi kerumitan masanya ialah O(n).
Contoh kod:
function get_median($arr) { if (count($arr) % 2 == 0) { $k = count($arr) / 2; } else { $k = (count($arr) + 1) / 2; } return quick_select($arr, $k); } function quick_select(&$arr, $k) { if (count($arr) == 1) return $arr[0]; $p = $arr[0]; $f = $l = array(); foreach ($arr as $v) { if ($v < $p) $f[] = $v; elseif ($v > $p) $l[] = $v; } if ($k <= count($f)) { return quick_select($f, $k); } elseif ($k > count($arr) - count($l)) { return quick_select($l, $k - (count($arr) - count($l))); } else { return $p; } }
Di atas ialah tiga kaedah untuk mendapatkan nilai perantaraan tatasusunan Kaedah yang berbeza sesuai untuk senario yang berbeza. Jika anda perlu mendapatkan berbilang nilai perantaraan, anda boleh menggunakan variasi kaedah di atas. Tidak kira kaedah mana pun, anda perlu memahami operasi asas tatasusunan sebelum anda boleh mengendalikan tatasusunan dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan nilai tengah tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!