> 백엔드 개발 > PHP 튜토리얼 > PHP 재귀 방식으로 구현된 퀵 정렬

PHP 재귀 방식으로 구현된 퀵 정렬

墨辰丷
풀어 주다: 2023-03-31 22:26:01
원래의
3077명이 탐색했습니다.

이 글에서는 주로 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));
로그인 후 복사

요약: 위 내용은 이 글의 전체 내용입니다. 모두의 학습에 도움이 되기를 바랍니다.

관련 권장사항:

php는 이미지 업로드를 위한 클라이언트측 및 서버측 메소드를 구현합니다.

php 코드는 파일 다운로드 속도 제어를 구현합니다.

php는 배열을 사용하여 드롭다운 목록 상자를 채웁니다.

위 내용은 PHP 재귀 방식으로 구현된 퀵 정렬의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿