php實(shí)現(xiàn)快速排序法函數(shù)代碼
更新時(shí)間:2012年08月27日 15:56:44 作者:
取一個(gè)值與其他值進(jìn)行比較,小的放在這個(gè)值的左邊,大的放在這個(gè)值的右邊,然后按照這個(gè)方式遞歸
代碼1:
<?php
function quicksort($str){
if(count($str)<=1) return $str;//如果個(gè)數(shù)不大于一,直接返回
$key=$str[0];//取一個(gè)值,稍后用來(lái)比較;
$left_arr=array();
$right_arr=array();
for($i=1;$i<count($str);$i++){//比$key大的放在右邊,小的放在左邊;
if($str[$i]<=$key)
$left_arr[]=$str[$i];
else
$right_arr[]=$str[$i];
}
$left_arr=quicksort($left_arr);//進(jìn)行遞歸;
$right_arr=quicksort($right_arr);
return array_merge($left_arr,array($key),$right_arr);//將左中右的值合并成一個(gè)數(shù)組;
}//以下是測(cè)試
$str=array(5,3,8,2,5,9,7,2,1,4,0);
print_r(quicksort($str));
?>
代碼2:
/* @快速排序法*/
function quickSort($left,$right,$arr){
$l = $left;
$r = $right;
$pivot = $arr[($left+$right)/2];
$temp = 0;
while($l<$r){
while($arr[$l]<$pivot){
$l++;
}
while($arr[$r]>$pivot){
$r--;
}
if($l>=$r) break;
$temp = $arr[$l];
$arr[$l] = $arr[$r];
$arr[$r] = $temp;
if($arr[$l]==$pivot) --$r;
if($arr[$r]==$pivot) ++$l;
}
if($l==$r){
$l++;
$r--;
}
if($left<$r){
quickSort($left, $r, $arr);
}elseif($right>$l){
quickSort($l, $right, $arr);
}else{
return $arr;
}
}
復(fù)制代碼 代碼如下:
<?php
function quicksort($str){
if(count($str)<=1) return $str;//如果個(gè)數(shù)不大于一,直接返回
$key=$str[0];//取一個(gè)值,稍后用來(lái)比較;
$left_arr=array();
$right_arr=array();
for($i=1;$i<count($str);$i++){//比$key大的放在右邊,小的放在左邊;
if($str[$i]<=$key)
$left_arr[]=$str[$i];
else
$right_arr[]=$str[$i];
}
$left_arr=quicksort($left_arr);//進(jìn)行遞歸;
$right_arr=quicksort($right_arr);
return array_merge($left_arr,array($key),$right_arr);//將左中右的值合并成一個(gè)數(shù)組;
}//以下是測(cè)試
$str=array(5,3,8,2,5,9,7,2,1,4,0);
print_r(quicksort($str));
?>
代碼2:
復(fù)制代碼 代碼如下:
/* @快速排序法*/
function quickSort($left,$right,$arr){
$l = $left;
$r = $right;
$pivot = $arr[($left+$right)/2];
$temp = 0;
while($l<$r){
while($arr[$l]<$pivot){
$l++;
}
while($arr[$r]>$pivot){
$r--;
}
if($l>=$r) break;
$temp = $arr[$l];
$arr[$l] = $arr[$r];
$arr[$r] = $temp;
if($arr[$l]==$pivot) --$r;
if($arr[$r]==$pivot) ++$l;
}
if($l==$r){
$l++;
$r--;
}
if($left<$r){
quickSort($left, $r, $arr);
}elseif($right>$l){
quickSort($l, $right, $arr);
}else{
return $arr;
}
}
您可能感興趣的文章:
- php中利用explode函數(shù)分割字符串到數(shù)組
- php數(shù)組函數(shù)序列之a(chǎn)rray_keys() - 獲取數(shù)組鍵名
- php數(shù)組查找函數(shù)in_array()、array_search()、array_key_exists()使用實(shí)例
- php中刪除數(shù)組的第一個(gè)元素和最后一個(gè)元素的函數(shù)
- PHP 查找字符串常用函數(shù)介紹
- PHP字符串比較函數(shù)strcmp()和strcasecmp()使用總結(jié)
- PHP中常用的字符串格式化函數(shù)總結(jié)
- php數(shù)組函數(shù)序列之a(chǎn)rray_push() 數(shù)組尾部添加一個(gè)或多個(gè)元素(入棧),返回新長(zhǎng)度。
- php array_push()數(shù)組函數(shù):將一個(gè)或多個(gè)單元壓入數(shù)組的末尾(入棧)
- php array_pop()數(shù)組函數(shù)將數(shù)組最后一個(gè)單元彈出(出棧)
- PHP中的排序函數(shù)sort、asort、rsort、krsort、ksort區(qū)別分析
- php常用經(jīng)典函數(shù)集錦【數(shù)組、字符串、棧、隊(duì)列、排序等】
相關(guān)文章
php連接mssql的一些相關(guān)經(jīng)驗(yàn)及注意事項(xiàng)
php連接mssql對(duì)于很多朋友或許已經(jīng)是老生長(zhǎng)談,習(xí)以為常了,不過(guò)本文還是要嘮叨一下,主要以分享連接數(shù)據(jù)庫(kù)的相關(guān)經(jīng)驗(yàn),感興趣的你可千萬(wàn)不要錯(cuò)過(guò),或許本文對(duì)你有所幫助呢2013-02-02PHP PDOStatement::setFetchMode講解
今天小編就為大家分享一篇關(guān)于PHP PDOStatement::setFetchMode講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02PHP創(chuàng)建word文檔的方法(平臺(tái)無(wú)關(guān))
這篇文章主要介紹了PHP創(chuàng)建word文檔的方法,結(jié)合實(shí)例形式分析了與平臺(tái)無(wú)關(guān)的生成word文檔的方法,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-03-03PHP編程求最大公約數(shù)與最小公倍數(shù)的方法示例
這篇文章主要介紹了PHP編程求最大公約數(shù)與最小公倍數(shù)的方法,涉及php數(shù)學(xué)計(jì)算的相關(guān)運(yùn)算技巧,需要的朋友可以參考下2017-05-05php運(yùn)行報(bào)錯(cuò)Call to undefined function curl_init()的最新解決方法
其實(shí)在網(wǎng)上很早之前就出現(xiàn)過(guò)這個(gè)問(wèn)題,網(wǎng)上百度了下,答案千篇一律,最近又遇到這個(gè)問(wèn)題,但是百度出來(lái)的問(wèn)題不能解決這個(gè)問(wèn)題了,所以只能翻墻找答案,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11shopex主機(jī)報(bào)錯(cuò)誤請(qǐng)求解決方案(No such file or directory)
最近vps客戶和服務(wù)托管客戶安裝了shopex網(wǎng)店系統(tǒng),他們的主機(jī)都報(bào)錯(cuò),錯(cuò)誤特點(diǎn)一樣,針對(duì)這個(gè)錯(cuò)誤我司技術(shù)推出shopex主機(jī)報(bào)錯(cuò)誤請(qǐng)求解決方案,希望能給予各位一點(diǎn)幫助2011-12-12