> 백엔드 개발 > PHP 튜토리얼 > PHP는 여러 정렬 및 검색 알고리즘을 구현합니다.

PHP는 여러 정렬 및 검색 알고리즘을 구현합니다.

little bottle
풀어 주다: 2023-04-05 22:52:01
앞으로
1840명이 탐색했습니다.

버블 정렬, 퀵 정렬, 이진 검색은 간단하지만 한동안 사용하지 않으면 잊어버리기 쉽습니다. 편집자가 찾아 모두와 함께 배우기 위해 공유한 PHP 구현 코드는 다음과 같습니다.

Sort

Bubble sort

최대값이 나올 때마다

function bubbleSort($arr)
{
    $count = count($arr);
    if ($count == 0) return false;

    for ($i = 0; $i < $count - 1; $i++) {
        for ($k = 0; $k < $count - 1 - $i; $k++) {
            if ($arr[$k] < $arr[$k + 1]) {
                $tmp         = $arr[$k];
                $arr[$k]     = $arr[$k + 1];
                $arr[$k + 1] = $tmp;
            }
        }
    }

    return $arr;
}
로그인 후 복사

Quick sort

기준값으로 왼쪽보다 작은 값, 오른쪽보다 큰 값을 선택한 후 왼쪽과 오른쪽이 재귀되고, 마지막으로 병합

function quickSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    $base = $arr[0];
    $left = $right = [];
    for ($i = 1; $i < $count; $i++) {
        if ($arr[$i] < $base) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }

    $left  = quickSort($left);
    $right = quickSort($right);

    return array_merge($left, [$base], $right);
}
로그인 후 복사

선택 정렬

가장 작다고 가정되는 값을 선택하고, 그보다 작다면 순서대로 비교해보세요. 위치를 바꿔보세요

function selectSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    for ($i = 0; $i < $count; $i++) {
        //假设最小值位置
        $p = $i;
        //用假设的最小值$arr[$p]轮流比较,发现比他小的就互换
        for ($j = $i + 1; $j < $count; $j++) {
            if ($arr[$p] > $arr[$j]) {
                $p = $j;
            }
        }

        if ($p != $i) {
            $tmp     = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }

    return $arr;
}
로그인 후 복사

검색

이진 검색

이진 검색은 정렬된 배열이어야 합니다. 매번 배열의 중간 위치에 있는 값을 대상과 비교하세요.

function binarySearch(array $arr, $target)
{
    $low = 0;
    $high = count($arr) - 1;
    while ($low <= $high) {
        $middle = floor(($high + $low) / 2);
        if ( $arr[$middle] == $target ) {
            return $middle;
        } elseif ( $arr[$middle] < $target ) {
            $low = $middle + 1;
        } else {
            $high = $middle - 1;
        }
    }

    return false;
}
로그인 후 복사

추천 튜토리얼: PHP 비디오 튜토리얼

위 내용은 PHP는 여러 정렬 및 검색 알고리즘을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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