PHP 두 가지 빠 른 정렬 알고리즘 인 스 턴 스

비록 PHP 와 같은 웹 응용 개발 에서 우 리 는 정렬 의 중요성 을 그다지 강조 하지 않 습 니 다.왜냐하면 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));

좋은 웹페이지 즐겨찾기