PHP實現 快速排序

2021-09-19 11:42:15 字數 1027 閱讀 6657

<?php

/** * created by phpstorm.

* user: baimayou

* date: 19-3-23

* time: 下午9:44

* 快速排序

* 思想:如果要排序陣列中下標從 p 到 r 之間的一組資料,我們選擇 p 到 r 之間的任意乙個資料作為 pivot(分割槽點)。

* 我們遍歷 p 到 r 之間的資料,將小於 pivot 的放到左邊,將大於 pivot 的放到右邊,將 pivot 放到中間。

* 經過這一步驟之後,陣列 p 到 r 之間的資料就被分成了三個部分,當陣列中待排序的元素個數變為1時就不需要進行排序

* 前面 p 到 q-1 之間都是小於 pivot 的,中間是 pivot,後面的 q+1 到 r 之間是大於 pivot 的。

* 解法:選取陣列字乙個元素為樞紐,從兩端交替向中間掃瞄,當low和height碰頭時結束掃瞄。

* 其實從後向前尋找第乙個小於point的值然後與point交換位置,然後從前向後一次尋找第乙個比point大的值與point交換位置

*/function quick(&$arr,$m)

function quick_sort(&$arr,$low,$height)

}function partition(&$arr,$low,$height)

temp($arr,$low,$height);

while($low < $height && $arr[$low] <= $point)

temp($arr,$low,$height);

}return $low;

}function temp(&$arr,$i,$j)

$str = '7485123';

$arr = str_split($str);

$num = count($arr);

$arr = quick($arr,$num);

var_dump($arr);

php實現快速排序

先獲取第乙個值為關鍵字,讓i指向第乙個,j指向最後乙個,先從最後乙個找比key小的,j指向它,將它放在i指向的地方,然後i再向前走,直到找到比key大的,放在j指向的地方,就這樣迴圈,直到i j的時候,關閉迴圈。arr array 1,2,3,5,2,3,9,8,3,2,7,4,9,8,0,4,58...

PHP實現快速排序

快速排序 在無序的陣列 data中,選擇任意乙個值作為對比值,定義i為頭部檢索索引,j為尾部檢索索引,演算法步驟 1 初始化對比值 value data 0 i 1,j count data 1 2 首先從尾部開始檢索,判斷 data j 是否小於 value,若不小於則 j 繼續檢索,直到找到比 ...

PHP 實現快速排序

首先了解快速排序的原理 1 先取乙個基值,用於每次的標準定位。2 遍歷陣列,將大於基值的放到右邊陣列,小於的放到左邊陣列 3 將每次的左右陣列和基值一起合併 實現 快速排序 function quick sort array 每次取最左邊的值 key array 0 leftarr array ri...