php實現(xiàn)快速排序法函數代碼
更新時間:2012年08月27日 15:56:44 作者:
取一個值與其他值進行比較,小的放在這個值的左邊,大的放在這個值的右邊,然后按照這個方式遞歸
代碼1:
<?php
function quicksort($str){
if(count($str)<=1) return $str;//如果個數不大于一,直接返回
$key=$str[0];//取一個值,稍后用來比較;
$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);//進行遞歸;
$right_arr=quicksort($right_arr);
return array_merge($left_arr,array($key),$right_arr);//將左中右的值合并成一個數組;
}//以下是測試
$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;
}
}
復制代碼 代碼如下:
<?php
function quicksort($str){
if(count($str)<=1) return $str;//如果個數不大于一,直接返回
$key=$str[0];//取一個值,稍后用來比較;
$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);//進行遞歸;
$right_arr=quicksort($right_arr);
return array_merge($left_arr,array($key),$right_arr);//將左中右的值合并成一個數組;
}//以下是測試
$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;
}
}
您可能感興趣的文章:
- php中利用explode函數分割字符串到數組
- php數組函數序列之array_keys() - 獲取數組鍵名
- php數組查找函數in_array()、array_search()、array_key_exists()使用實例
- php中刪除數組的第一個元素和最后一個元素的函數
- PHP 查找字符串常用函數介紹
- PHP字符串比較函數strcmp()和strcasecmp()使用總結
- PHP中常用的字符串格式化函數總結
- php數組函數序列之array_push() 數組尾部添加一個或多個元素(入棧),返回新長度。
- php array_push()數組函數:將一個或多個單元壓入數組的末尾(入棧)
- php array_pop()數組函數將數組最后一個單元彈出(出棧)
- PHP中的排序函數sort、asort、rsort、krsort、ksort區(qū)別分析
- php常用經典函數集錦【數組、字符串、棧、隊列、排序等】
相關文章
PHP PDOStatement::setFetchMode講解
今天小編就為大家分享一篇關于PHP PDOStatement::setFetchMode講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02php運行報錯Call to undefined function curl_init()的最新解決方法
其實在網上很早之前就出現(xiàn)過這個問題,網上百度了下,答案千篇一律,最近又遇到這個問題,但是百度出來的問題不能解決這個問題了,所以只能翻墻找答案,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起學習學習吧。2016-11-11shopex主機報錯誤請求解決方案(No such file or directory)
最近vps客戶和服務托管客戶安裝了shopex網店系統(tǒng),他們的主機都報錯,錯誤特點一樣,針對這個錯誤我司技術推出shopex主機報錯誤請求解決方案,希望能給予各位一點幫助2011-12-12