>  기사  >  백엔드 개발  >  PHP에서 버블 정렬을 구현하는 코드 예제

PHP에서 버블 정렬을 구현하는 코드 예제

不言
不言앞으로
2019-01-26 10:49:195044검색

이 기사는 PHP에서 버블 정렬을 구현하는 방법에 대한 코드 예제를 제공합니다. 여기에는 특정 참조 값이 있습니다. 도움이 필요한 친구가 도움이 되기를 바랍니다.

버블 정렬은 비교적 간단하고 일반적으로 사용되는 알고리즘이며, 면접에서 가장 많이 묻는 질문이기도 합니다. 제가 더 깊은 이해를 할 수 있을 만큼 능력이 부족하다고 느껴서 아래에 일부 자료의 내용을 기록해 두겠습니다. 기사 마지막에 원문 링크가 있습니다.

버블 정렬

버블 정렬(영어: Bubble Sort)은 간단한 정렬 알고리즘입니다. 정렬할 시퀀스를 반복적으로 살펴보며 한 번에 두 요소를 비교하고 순서가 잘못된 경우 교체합니다. 더 이상 교환이 필요하지 않을 때까지 어레이 방문 작업이 반복됩니다. 이는 어레이가 정렬되었음을 의미합니다. 이 알고리즘의 이름은 작은 요소가 스와핑을 통해 배열의 맨 위로 천천히 "부동"된다는 사실에서 유래되었습니다.

버블 정렬은 n개 항목에 대해 O(n2)개의 비교 횟수가 필요하며 제자리에서 정렬될 수 있습니다. 이 알고리즘은 이해하고 구현하기 가장 간단한 정렬 알고리즘 중 하나이지만 많은 수의 요소가 포함된 배열을 정렬하는 데는 매우 비효율적입니다.

버블 정렬 알고리즘은 다음과 같이 작동합니다.

인접한 요소를 비교합니다. 첫 번째 것이 두 번째 것보다 크면 둘 다 교환하세요.

첫 번째 쌍부터 시작하여 마지막 쌍으로 끝나는 각 인접 요소 쌍에 대해 동일한 작업을 수행합니다. 이 단계가 완료되면 최종 요소가 가장 큰 숫자가 됩니다.

마지막 요소를 제외한 모든 요소에 대해 위 단계를 반복합니다.

비교할 숫자 쌍이 더 이상 없을 때까지 매번 요소 수를 줄여 위 단계를 계속 반복하세요.

위는 위키피디아에 소개된 내용인데 원리는 복잡하지 않다는 것을 알 수 있습니다. 하지만 데이터의 양이 많을 때는 좋은 선택이 아닙니다.

애니메이션 데모

아래 그림과 예제의 코드 순서가 반대라는 점에 유의해야 합니다.
PHP에서 버블 정렬을 구현하는 코드 예제

PHP에서 버블 정렬을 구현하는 코드 예제

인스턴스

<?php $arr = [33, 24, 8, 21, 2, 23, 3, 32, 16];

function bubbleSort($arr)
{
    if (!is_array($arr)) {
        return false;
    }

    $count = count($arr);

    if ($count < 2) {
        return $arr;
    }

    for ($i = 0; $i < $count; $i++) {
        for ($k = $i + 1; $k < $count; $k++) {
            // $arr[$i] 和 $arr[$k] 是相邻的两个值
            if ($arr[$i] > $arr[$k]) {
                // 前者大于后者,调换位置
                // 如果想要按照从大到小进行排序,改为 $arr[$i]  2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )

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

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