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