PHP 快速排序

2021-09-06 05:47:06 字數 1165 閱讀 3440

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...