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

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

little bottle
little bottle앞으로
2019-04-18 16:20:381837검색

버블 정렬, 퀵 정렬, 이진 검색은 간단하지만 한동안 사용하지 않으면 잊어버리기 쉽습니다. 편집자가 찾아 모두와 함께 배우기 위해 공유한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제