Home >Backend Development >PHP Problem >How to get the middle value of an array in php
During the process of array operations, sometimes it is necessary to obtain the intermediate value in the array, such as the median of the array. PHP is a very flexible language and can use a variety of methods to obtain the intermediate value of an array. In this article, we will introduce several ways to get the intermediate value of an array.
Method 1: Take the median after sorting
This method is relatively simple. You only need to sort the array and then take the middle value. However, this method has an obvious shortcoming, that is, the time complexity of sorting is O(nlogn). When n is large, the speed is relatively slow.
PHP provides a sort() function that can sort the array, and we can use this function to achieve it.
Code example:
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; }
Method 2: Use array functions to find the median
PHP provides some array functions, we can use them to calculate the median value of an array . The specific method is to first use the count() function to get the length of the array, then use the array_slice() function to take out the middle segment from the array, and finally use the array_sum() function to sum it up, and then divide it by the length. This method is simpler and faster.
Code example:
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; }
Method 3: Quick selection algorithm
Both of the above two methods require sorting the array, so the time complexity is relatively high. There is actually a method called QuickSelect that can find the median without sorting. The quick selection algorithm has many similarities with the quick sort algorithm, but it only requires part of the quick sort, so its time complexity is O(n).
Code example:
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; } }
The above are three methods of obtaining the intermediate value of an array. Different methods are suitable for different scenarios. If you need to get multiple intermediate values, you can use a variation of the above method. No matter which method you use, you need to first understand the basic operations of arrays in order to better handle arrays.
The above is the detailed content of How to get the middle value of an array in php. For more information, please follow other related articles on the PHP Chinese website!