>  기사  >  백엔드 개발  >  PHP에서 빠른 정렬을 구현하는 방법의 예

PHP에서 빠른 정렬을 구현하는 방법의 예

小云云
小云云원래의
2017-12-20 10:13:371643검색

이 글에서는 주로 퀵 정렬의 원리를 간략하게 설명하고, 퀵 정렬을 구현하기 위한 재귀 알고리즘을 사용하여 PHP의 관련 작동 기술을 분석하여 필요한 친구들이 참고할 수 있습니다. 그것이 모두에게 도움이 되기를 바랍니다.

먼저 빠른 정렬의 원리를 이해해야 합니다. 현재 배열에서 요소를 찾고(일반적으로 첫 번째 요소 선택) 표준에 따라 두 개의 새로운 빈 배열을 만들고, 순회된 요소가 더 큰 경우 전체 배열 요소를 순회합니다. 현재보다 요소가 작으면 왼쪽 배열에 넣고, 그렇지 않으면 오른쪽 배열에 넣은 다음 새 배열에 대해 동일한 작업을 수행합니다.

이것이 재귀의 원리와 일치한다는 것을 찾는 것은 어렵지 않으므로 재귀를 사용하여 구현할 수 있습니다.

재귀를 사용하려면 재귀 지점과 재귀 종료를 찾아야 합니다.

재귀 지점: 배열의 요소가 1보다 큰 경우 분해해야 하므로 재귀 지점은 새로 생성된 개수입니다. 배열 요소가 1

보다 큼 재귀 종료: 언제 더 이상 새 배열을 정렬 해제할 필요가 없나요? 이때 배열 요소의 개수가 1이 되므로 이것이 종료입니다.

원리를 이해하고 코드 구현을 살펴보겠습니다~

<?php
//快速排序
//待排序数组
$arr=array(6,3,8,6,4,2,9,5,1);
//函数实现快速排序
function quick_sort($arr)
{
    //判断参数是否是一个数组
    if(!is_array($arr)) return false;
    //递归出口:数组长度为1,直接返回数组
    $length=count($arr);
    if($length<=1) return $arr;
    //数组元素有多个,则定义两个空数组
    $left=$right=array();
    //使用for循环进行遍历,把第一个元素当做比较的对象
    for($i=1;$i<$length;$i++)
    {
      //判断当前元素的大小
      if($arr[$i]<$arr[0]){
        $left[]=$arr[$i];
      }else{
        $right[]=$arr[$i];
      }
    }
    //递归调用
    $left=quick_sort($left);
    $right=quick_sort($right);
    //将所有的结果合并
    return array_merge($left,array($arr[0]),$right);
}
//调用
echo "<pre class="brush:php;toolbar:false">";
print_r(quick_sort($arr));

실행 결과:

Array
(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
  [4] => 5
  [5] => 6
  [6] => 6
  [7] => 8
  [8] => 9
)

관련 권장 사항:

JS Hill 정렬 및 빠른 정렬 구현 방법

php를 사용하여 2차원 배열을 구현합니다. 퀵 정렬 알고리즘 예시

퀵 정렬 구현 방법

위 내용은 PHP에서 빠른 정렬을 구현하는 방법의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.