python(快速排序):
# -*- UTF-8 -*-
def quicksort(arr):
if (len(arr)) < 2:
return arr;php
mark = arr[0] #递归条件
#第一种方式
# left = [i for i in arr[1:] if i < mark];
# right = [i for i in arr[1:] if i > mark];python
#第二种方式
left = [];
right = [];
for i in arr:
if (i < mark):
left.append(i);
if (i > mark):
right.append(i);数组
return quicksort(left) + [mark] + quicksort(right);app
print(quicksort([10,3,5,7]))ui
php(快速排序):
function quicksort($arr)
{
$cnt = count($arr);
if ($cnt < 2) {
return $arr;
}排序
$mid = $arr[0]; //取第一个值做为递归条件
$left = [];
$right = [];
for ($i=0; $i < $cnt; $i++) {
if ($arr[$i] > $mid) {
$right[] = $arr[$i];
}递归
if ($arr[$i] < $mid) {
$left[] = $arr[$i];
}
}io
return array_merge(quicksort($left), [$mid], quicksort($right));
}
var_dump(quicksort([10,3,5,7]));function
快速排序思想:分而治之,随机选择一个基准值,而后把数组分区(左右两边),由于左右两边的的数组也是无需的,而后递归排序sort