PHP實現快速排序

2021-07-11 00:11:23 字數 1148 閱讀 3357

快速排序:在無序的陣列$data中,選擇任意乙個值作為對比值,定義i為頭部檢索索引,j為尾部檢索索引,演算法步驟:

(1)初始化對比值$value=$data[0],$i=1,$j=count($data)-1

(2)首先從尾部開始檢索,判斷$data[$j]是否小於$value,若不小於則$j--,繼續檢索,直到找到比$value小的座標

(3)這時開始頭部檢索,判斷$data[$i]是否大於$value,若不大於則$i++,繼續檢索,直到找到比$value大的座標

(4)這時$data[$j]與$data[$i]的值相互交換,即把比$value大的放到右邊,把比$value小的放到左邊

(5)重複3、4直到$i==$j

(6)這時已經把比$value大的放到右邊,把比$value小的放到左邊,確定了中間的座標位置為$i,中間值為$value,把$data[$i]的值與$data[0]的值交換,因為中間值為$value,需要把$value挪到陣列的中間座標

(7)陣列分成左右2個無序的陣列,再分別遞迴執行1-6,直到陣列長度為1

**:

<?php

header("content-type: text/html; charset=utf-8");

function quicksort($data, $startindex, $endindex)

// 找到比對比值大的左邊

while ($data[$startt] < $value && $startt < $endt)

if($endt > $startt)

} // 防止陣列已經排序好的情況

if($data[$startt] < $value)

$data = quicksort($data, $startindex, $startt - 1);

$data = quicksort($data, $startt + 1, $endindex);

return $data;

}else

}$data = array(10, 5, 30, 22, 1, 42, 14, 34, 8, 13, 28, 36, 7);

$data = quicksort($data, 0, count($data) - 1);

var_dump($data);

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 實現快速排序

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

PHP實現快速排序

快速排序思想 1.選取陣列中乙個元素作為比較物件,一般選取第乙個元素 為避免發生最壞情況可選擇第乙個元素 最後乙個元素和中間元素的平均值作為比較物件 2.遍歷陣列,將小於比較物件的元素放入乙個陣列,將大於等於比較物件的元素放入另乙個陣列。3.然後在按此方法分別對這兩部分資料進行快速排序 遞迴實現 4...