PHP快速排序(原地切分)
生活随笔
收集整理的這篇文章主要介紹了
PHP快速排序(原地切分)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
????????快速排序是一種分治的排序算法,采用遞歸的思想,將數(shù)組元素分為兩部分,選擇切分元素,左右掃描數(shù)組,將大于切分元素的數(shù)據(jù)放在右邊,小于切分元素的數(shù)據(jù)放在左邊,直到掃描指針相遇,切分結(jié)束,同時遞歸調(diào)用,直到數(shù)組有序。
????? ? 代碼如下:
<?php function quick_sort(array& $array,$low,$high){if($low >= $high){return $array;//遞歸出口,數(shù)組的最高位下標(biāo)小于數(shù)組最低位下標(biāo)}$i = $low;$j = $high+1; //數(shù)組切分循環(huán)$v = $array[$low];//切分元素while(true){//循環(huán)查找while($array[--$j] >= $v)if($j == $low)break;//從右往左查找第一個比$v小的元素while($array[++$i] <= $v)if($i == $high)break;//從左往右查找第一個比$v大的元素if($i >= $j)break;//指針相遇$tmp = $array[$j];$array[$j] = $array[$i];$array[$i] = $tmp; //元素位置交換}$array[$low] = $array[$j];$array[$j]= $v;//將切分元素放入相應(yīng)位置quick_sort($array,$low,$j-1);quick_sort($array,$j+1,$high); //遞歸調(diào)用}$array = array('1','3','2','5','6','5'); $high = count($array); quick_sort($array,0,$high-1); var_dump($array); ?>同時也可以用shuffle()函數(shù)對數(shù)組進(jìn)行打亂,以便消除對輸入的依賴~
轉(zhuǎn)載于:https://my.oschina.net/aqingyan/blog/758901
總結(jié)
以上是生活随笔為你收集整理的PHP快速排序(原地切分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【云栖大会】探索云时代下的游戏开发模式
- 下一篇: 肯德基怎么点外卖(如何评价肯德基新出的王