php經典演算法(二分法 快速排序)

2021-08-08 07:57:02 字數 938 閱讀 7868

/*

二分法查詢

@param $arr 查詢陣列

@param $key 查詢值

@param $low 最小數

@param $high 最大數

*/function

func

($arr, $key, $low=0, $high=0)

$mid = intval(($low + $high) / 2);

if ($arr[$mid] == $key) elseif ($arr[$mid] > $key) else

}}$arr = ['a', 'b', 'c'];

func($arr, 'c');

/*

快速排序

原理:找到當前陣列中的任意乙個元素(一般選擇陣列第乙個元素),作為標準,新建兩個空陣列,遍歷整個陣列元素,如果遍歷到的元素比當前的元素要小,那麼就放到左邊的陣列,否則放到右邊的陣列,然後再對新陣列進行同樣的操作。

*/function

quick_sort

($arr)

if (count($arr) <= 1)

$left_arr = ;

$right_arr = ;

$key = $arr[0];

for ($i=0; $i

$arr); $i++) else

}$left_arr = quick_sort($left_arr);

$right_arr = quick_sort($right_arr);

return array_merge($left_arr, [$key], $right_arr);

}$arr = [2, 3, 6, 4, 1, 0];

print_r(quick_sort($arr));

二分法快速排序

我在實現二分法快速排序的時候,最初的程式是這樣的。include using namespace std void qsort int arr,int left,int right while l r arr l value l if arr l value while l r arr l valu...

C 快速(二分法)排序

快速 二分法 排序的思想是將陣列劃分為兩邊,以某個節點v為界 設這個節點的值為 v 在節點v左邊的所有元素都小於 v,在節點v右邊的所有元素都大於v.這樣不停地劃分,到最後整個陣列就是有序的了。具體分成兩邊的思路為 起始下標為start,結束下標為 end 選擇v a end 作為中介點 先從sta...

二分法 選擇排序 快速排序

最近看了 演算法 覺得很棒,做一些總結記錄。coding utf 8 import random author chenk class algorithme def init self self.low 0 self.high 10000 def get random num self return...