1<?php2#
快速排序3#
@param $arr 待排序陣列4#
@param $start 排序的開始座標5#
@param $end 排序陣列的結束座標
6function quicksort(array &$arr, $start, $end
) 16
while($arr[$high] >= $arr[$start] && $low != $high
) 19
$temp = $arr[$low
];20
$arr[$low] = $arr[$high
];21
$arr[$high] = $temp;22
}2324#
如果low和high指向的元素小於$arr[$start],交換$arr[$start]和這個元素25#
否則交換$arr[$start]和low指向的前乙個元素,然後進入遞迴
26if($low != $start && $arr[$low] > $arr[$start]) $low--;
27$temp = $arr[$low
];28
$arr[$low] = $arr[$start
];29
$arr[$start] = $temp;30
31#遞迴中止條件是切分後的部分只剩下乙個元素
32if($low - 1 > $start) quicksort($arr, $start, $low - 1);
33if($low + 1 < $end) quicksort($arr, $low + 1, $end
);34}35
36$arr = array(8, 8, 1, 1, 5, 3, 7, 9, 8, 4, 10);
37 quicksort($arr, 0, count($arr) - 1);
3839
print_r($arr
);40 ?>
輸出
array ( [0] => 1 [1] => 1 [2] => 3 [3] => 4 [4] => 5 [5] => 7 [6] => 8 [7] => 8 [8] => 8 [9] => 9 [10] => 10 )
php 快速排序演算法,PHP 快速排序演算法
概念 快速排序演算法是對冒泡演算法的乙個優化。他的思想是先對陣列進行分割,把大的元素數值放到乙個臨時陣列裡,把小的元素數值放到另乙個臨時陣列裡 這個分割的點可以是陣列中的任意乙個元素值,一般用第乙個元素,即 array 0 然後繼續把這兩個臨時陣列重複上面拆分,最後把小的陣列元素和大的陣列元素合併起...
php 快速排序演算法,php 快速排序函式
在php程式設計中會用到一些常用的演算法,把這些演算法 寫成函式方便以後呼叫 php快速排序函式就這樣誕生了,兩個版本,遞迴和無遞迴。可以根據實際需要選用。qsort 資料快速排序遞迴版 array to sort 需要排序的陣列 排序過程中,陣列的鍵會被替換為數字索引的鍵 如果 array to ...
快速排序 php
快速排序 function quick sort arr 如果沒有返回,說明陣列內的元素個數 多餘1個,需要排序 選擇乙個標尺 選擇第乙個元素 base num arr 0 遍歷 除了標尺外的所有元素,按照大小關係放入兩個陣列內 初始化兩個陣列 left array array 小於標尺的 righ...