基本原理:选出当前数组中任一元素(通常为第一个)作为标准,新建两个空数组分别置于当前数组前后,然后遍历当前数组,如果数组中元素值小于等于第一个元素值就放到前边空数组,否则放到后边空数组。
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));