php實現快速排序

2021-08-25 08:57:21 字數 765 閱讀 8814

首先我們要理解一下快速排序的原理:找到當前陣列中的任意乙個元素(一般選擇第乙個元素),作為標準,新建兩個空陣列,遍歷整個陣列元素,

如果遍歷到的元素比當前的元素要小,那麼就放到左邊的陣列,否則放到右面的陣列,然後再對新陣列進行同樣的操作,

不難發現,這裡符合遞迴的原理,所以我們可以用遞迴來實現。

使用遞迴,則需要找到遞迴點和遞迴出口:

遞迴點:如果陣列的元素大於1,就需要再進行分解,所以我們的遞迴點就是新構造的陣列元素個數大於1

遞迴出口:我們什麼時候不需要再對新陣列不進行排序了呢?就是當陣列元素個數變成1的時候,所以這就是我們的出口。

理解了原理,來看一下**實現~

<?php

//快速排序

//待排序陣列

$arr=array(6,3,8,6,4,2,9,5,1);

//函式實現快速排序

function quick_sort($arr)

else

}//遞迴呼叫

$left=quick_sort($left);

$right=quick_sort($right);

//將所有的結果合併

return array_merge($left,array($arr[0]),$right);

}//呼叫

echo "";

print_r(quick_sort($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...