归并排序
归并排序是一种很稳定的排序算法,
function 归并排序($arr) { if (count($arr) <= 1) return $arr; $mid = floor(count($arr) / 2); $left = array_slice($arr, 0, $mid); $right = array_slice($arr, $mid); $left = $this->归并排序($left); $right = $this->归并排序($right); $data = $this->merge($left, $right); return $data; } public function merge($a, $b) { //merge函数将指定的两个有序数组(arr1arr2,)合并并且排序 //我们可以找到第三个数组,然后依次从两个数组的开始取数据哪个数据小就先取哪个的,然后删除掉刚刚取过///的数据 $arr = array(); while (!empty($a) && !empty($b)) { //这里不断的判断哪个值小,就将小的值给到arr,但是到最后肯定要剩下几个值, //不是剩下arrA里面的就是剩下arrB里面的而且这几个有序的值,肯定比arrC里面所有的值都大所以使用 $arr[] = $a[0] < $b[0] ? array_shift($a) : array_shift($b); } return array_merge($arr, $a, $b); }
越努力越幸运