>백엔드 개발 >PHP 튜토리얼 >PHP 정렬 알고리즘: PHP 빠른 정렬 알고리즘 원리 및 알고리즘 구현

PHP 정렬 알고리즘: PHP 빠른 정렬 알고리즘 원리 및 알고리즘 구현

不言
不言원래의
2018-08-14 16:15:531987검색

이 기사의 내용은 PHP 정렬 알고리즘에 관한 것입니다. PHP 퀵 정렬의 알고리즘 원리와 알고리즘 구현에 대한 내용입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

php 빠른 정렬 알고리즘 원리: 현재 배열에서 임의의 요소를 찾습니다(일반적으로 첫 번째 요소 선택). 기준으로 left와 rignt 두 개의 빈 배열을 만들고 전체 배열 요소를 순회합니다. traverse 수신된 요소가 현재 요소보다 작으면 왼쪽 배열에 배치하고, 현재 요소보다 크면 rignt에 배치한 후 새 배열에도 동일한 작업을 수행합니다.

재귀:
재귀는 함수가 자신을 호출하는 메커니즘입니다.
재귀에는 경계조건, 즉 재귀적 종료(exit recursion)가 있어야 합니다.
Recursive Forward 섹션과 Recursive Return 섹션이 최종 값입니다
경계 조건이 충족되지 않을 경우 Recursive Forward ;경계조건(재귀 종료)이 만족되면 재귀가 반환됩니다.
PHP의 재귀는 성능을 많이 소모하므로 사용하지 않는 것이 좋습니다.

php 퀵 정렬 원리 복합 재귀 원리
재귀 지점: 배열 요소가 1보다 크면 다시 분해해야 하므로 재귀 지점은 새로 구성된 배열의 개수입니다. 요소가 1보다 큼
Recursive 종료: 배열 요소의 개수가 1이면 새 배열을 정렬할 필요가 없습니다.

php 빠른 정렬 방법 구현 코드:

$arr = [34,56,7,89,12,9];
function quick_sort($arr)
{
// 判断参数是否是一个数组
if(!is_array($arr)) return false;
// 递归出口:数组长度为1,直接返回数组
$length = count($arr);
if($length <= 1) return $arr;
// 数组元素有多个,则定义两个数组
$left = $right = [];
// 循环遍历数组,把第一个元素当做比较的对象
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,[$arr[0]],$right);
}
print_r(quick_sort($arr));

관련 권장 사항:

php 버블 정렬 빠른 정렬, php 버블 정렬 #🎜 🎜#

php 버블 정렬 빠른 정렬, php 버블 정렬_PHP 튜토리얼

위 내용은 PHP 정렬 알고리즘: PHP 빠른 정렬 알고리즘 원리 및 알고리즘 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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