重温PHP之快速排序
程序员文章站
2022-07-02 21:05:40
基本原理:选出当前数组中任一元素(通常为第一个)作为标准,新建两个空数组分别置于当前数组前后,然后遍历当前数组,如果数组中元素值小于等于第一个元素值就放到前边空数组,否则放到后边空数组。 ......
基本原理:选出当前数组中任一元素(通常为第一个)作为标准,新建两个空数组分别置于当前数组前后,然后遍历当前数组,如果数组中元素值小于等于第一个元素值就放到前边空数组,否则放到后边空数组。
1 //快速排序 2 function quick_sort($arr) { 3 //获取数组单元个数 4 $count = count($arr); 5 //判断数组长度 6 if ($count <= 1) { 7 return $arr; 8 } else { 9 //定义两个空数组 10 $before = $after = array(); 11 //遍历数组 12 for ($i=1; $i < $count; $i++) { 13 //以第一个元素为标准进行判断 14 if ($arr[$i] <= $arr[0]) { 15 $before[] = $arr[$i]; 16 } else { 17 $after[] = $arr[$i]; 18 } 19 } 20 //递归调用 21 $before = quick_sort($before); 22 $after = quick_sort($after); 23 //合并数组 24 return array_merge($before, array($arr[0]), $after); 25 } 26 } 27 //测试 28 $arr = array(16, 9, 3, 12, 88, 19, 18, 16); 29 var_dump(quick_sort($arr));