国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php兩種快速排序算法實(shí)例

Original 2017-02-08 10:17:00 364
abstract:雖然在PHP這樣的web應(yīng)用開(kāi)發(fā)中,我們不是太強(qiáng)調(diào)排序的重要性,因?yàn)镻HP自身已經(jīng)帶了例如sort()等這樣強(qiáng)大的排序函數(shù),但是在一些重要的場(chǎng)合,例如某些高并發(fā)的場(chǎng)合,我想排序算法的影響已經(jīng)不能忽略。所以在此介紹遞歸排序和迭代排序。遞歸法:/** * 遞歸法實(shí)現(xiàn)的快速排序 */ function quicksort($seq) {     

雖然在PHP這樣的web應(yīng)用開(kāi)發(fā)中,我們不是太強(qiáng)調(diào)排序的重要性,因?yàn)镻HP自身已經(jīng)帶了例如sort()等這樣強(qiáng)大的排序函數(shù),但是在一些重要的場(chǎng)合,例如某些高并發(fā)的場(chǎng)合,我想排序算法的影響已經(jīng)不能忽略。所以在此介紹遞歸排序和迭代排序。

遞歸法:

/**
* 遞歸法實(shí)現(xiàn)的快速排序
*/
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;
}

   

使用:

/**
*產(chǎn)生一個(gè)隨機(jī)數(shù)組
*/
for($i=0;$i<5;$i++){
  $testArr[]=mt_rand(0,100);
}
var_dump($testArr);
var_dump(quicksort($testArr));
 
var_dump(quicksortx($testArr));

更多關(guān)于php兩種快速排序算法實(shí)例請(qǐng)關(guān)注PHP中文網(wǎng)(miracleart.cn)其他文章!   


Release Notes

Popular Entries