首頁  >  文章  >  後端開發  >  PHP遞歸法實現的快速排序

PHP遞歸法實現的快速排序

墨辰丷
墨辰丷原創
2018-06-13 11:54:063050瀏覽

這篇文章主要介紹了PHP兩種快速排序演算法實例,本文直接給出實現代碼,分別使用遞歸法、迭代法實現,需要的朋友可以參考下

雖然在PHP這樣的在web應用開發中,我們不是太強調排序的重要性,因為PHP本身已經帶了例如sort()等這樣強大的排序函數,但是在一些重要的場合,例如某些高並發的場合,我想排序演算法的影響已經不能忽略。所以在此介紹遞歸排序和迭代排序。

遞歸法

/**
* 递归法实现的快速排序
*/
function quicksort($seq)
{
    $k = $seq[0];
    $x = array();
    $y = array();
    for($i=1; $i< $_size; $i++) {
      if($seq[$i] <= $k) {
        $x[] = $seq[$i];
      } else {
        $y[] = $seq[$i];
      }
    }
    $x = quicksort($x);
    $y = quicksort($y);
    return array_merge($x, array($k), $y);
  } else {
    return $seq;
  }
}

迭代法:

/**
* 迭代法的快速排序
*/
function quicksortx(&$seq)
{
  $stack = array($seq);
  $sort = array();
  while ($stack) {
    $arr = array_pop($stack);
    if(count($arr) <= 1) {
      if(count($arr) == 1) {
        $sort[] = &$arr[0];
      }
      continue;
    }
    $k = $arr[0];
    $x = array();
    $y = array();
    $_size = count($arr);
    for($i =1 ;$i < $_size; $i++) {
      if($arr[$i] <= $k) {
        $x[] = &$arr[$i];
      } else {
        $y[] = &$arr[$i];
      }
    }
    !empty($y) && array_push($stack, $y);
    array_push($stack, array($arr[0]));
    !empty($x) && array_push($stack, $x);
  }
  return $sort;
}

使用:

/**
*产生一个随机数组
*/
for($i=0;$i<5;$i++){
  $testArr[]=mt_rand(0,100);
}
var_dump($testArr);
var_dump(quicksort($testArr));

var_dump(quicksortx($testArr));

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php實作上傳圖片客戶端和伺服器端的方法

php程式碼實作控制檔下載速度

php利用陣列填入下拉清單框

#

以上是PHP遞歸法實現的快速排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn