php教程 PHP源码 PHP 버블 정렬(Bubble Sort) 알고리즘에 대한 자세한 설명

PHP 버블 정렬(Bubble Sort) 알고리즘에 대한 자세한 설명

Nov 11, 2016 am 09:26 AM

머리말

버블 정렬은 대략적으로 인접한 두 숫자를 순서대로 비교한 다음 마지막 두 자리까지 크기에 따라 정렬하는 것을 의미합니다. 정렬 과정에서는 항상 작은 숫자가 앞쪽에 배치되고 큰 숫자가 뒤쪽에 배치되는데, 이는 거품이 떠오르는 것과 동일하므로 이를 버블 정렬이라고 합니다. 그러나 실제로 실제 과정에서는 필요에 따라 역으로 사용할 수도 있습니다. 큰 나무는 앞으로 배치되고 소수점은 뒤로 배치됩니다.

실제 전투

직접 코드:

<?php/**
 * 冒泡排序算法示例
 */// 这里以一维数组做演示$demo_array = array(23,15,43,25,54,2,6,82,11,5,21,32,65);// 第一层for循环可以理解为从数组中键为0开始循环到最后一个for ($i=0;$i<count($demo_array);$i++) {    // 第二层将从键为$i的地方循环到数组最后
    for ($j=$i+1;$j $demo_array[$j]) {            $tmp            = $demo_array[$i]; // 这里的tmp是临时变量
            $demo_array[$i] = $demo_array[$j]; // 第一次更换位置
            $demo_array[$j] = $tmp;            // 完成位置互换
        }
    }
}// 打印结果集echo &#39;&#39;;
var_dump($demo_array);echo &#39;&#39;;
로그인 후 복사

실행 결과:

array(13) {
  [0]=>  int(2)
  [1]=>  int(5)
  [2]=>  int(6)
  [3]=>  int(11)
  [4]=>  int(15)
  [5]=>  int(21)
  [6]=>  int(23)
  [7]=>  int(25)
  [8]=>  int(32)
  [9]=>  int(43)
  [10]=>  int(54)
  [11]=>  int(65)
  [12]=>  int(82)
}
로그인 후 복사

결과 위에서 배열의 키 값 순서가 변경되어 정렬이 성공한 것을 확인할 수 있습니다.

위 알고리즘이 배열의 키 값을 값 크기에 따라 작은 것부터 큰 것 순으로 정렬하는 것이라면, 역으로 큰 것에서 작은 것 순으로 연산하는 방법은 무엇일까요?

매우 간단합니다. 다음과 같이 비교 기호를 수정하면 됩니다.

<?php/**
 * 冒泡排序算法示例
 */// 这里以一维数组做演示$demo_array = array(23,15,43,25,54,2,6,82,11,5,21,32,65);// 第一层for循环可以理解为从数组中键为0开始循环到最后一个for ($i=0;$i<count($demo_array);$i++) {    // 第二层将从键为$i的地方循环到数组最后
    for ($j=$i+1;$j<count($demo_array);$j++) {        // 比较数组中相邻两个值的大小
        if ($demo_array[$i] < $demo_array[$j]) {            $tmp            = $demo_array[$i]; // 这里的tmp是临时变量
            $demo_array[$i] = $demo_array[$j]; // 第一次更换位置
            $demo_array[$j] = $tmp;            // 完成位置互换
        }
    }
}// 打印结果集echo &#39;&#39;;
var_dump($demo_array);echo &#39;&#39;;
로그인 후 복사

실행 결과:

array(13) {
  [0]=>  int(82)
  [1]=>  int(65)
  [2]=>  int(54)
  [3]=>  int(43)
  [4]=>  int(32)
  [5]=>  int(25)
  [6]=>  int(23)
  [7]=>  int(21)
  [8]=>  int(15)
  [9]=>  int(11)
  [10]=>  int(6)
  [11]=>  int(5)
  [12]=>  int(2)
}
로그인 후 복사

끝입니다. 순서를 쉽게 변경하세요.

Extension

위의 코드를 잘 살펴보면 주목할만한 곳이 하나 있는데, 바로 스왑 변수는 주목할 가치가 있습니다. 네, 이것도 버블링의 핵심 포인트입니다. 이 기술을 익히면 나중에 다른 곳에서도 사용할 수 있습니다.

여기서 이에 대해 조금 이야기해보겠습니다.

원리:

이제 두 개의 변수 A와 B가 있으며 요구 사항은 해당 값을 교환하는 것입니다.

질문을 보면 가장 먼저 직접 할당을 떠올릴 수 있지만, 직접 할당을 하게 되면 누가 누구에게 먼저 할당을 하든 그 중 하나는 반드시 덮어씌워진다는 것을 보면 알 수 있습니다. 세 번째 변수 C는 필요한 목표를 달성할 수 있도록 A 또는 B에 값을 임시로 저장합니다.

$c = $a; // 暂存
$a = $b; // b给a
$b = $c; // 暂存的a值再给b
로그인 후 복사


참고: 실제로 세 번째 변수는 필요 없으며 A와 B 변수의 값을 서로 바꿔 사용할 수 있습니다. (), str_replace() 등 메서드입니다. 여기서는 버블 정렬을 도입하므로 너무 많이 확장하지는 않겠습니다.

요약

버블 정렬에는 정말 많은 것들이 있습니다. 요약하자면, 두 가지 주요 사항이 있습니다:

  • 루프 비교

  • 키 값 교환

이 두 가지 사항을 모두 완료할 수 있다면 기본적으로는 괜찮습니다. 물론 버블 정렬에는 여러 가지 알고리즘이 있지만, 여기에만 나와 있습니다. 그 중 하나는 관심 있는 학생들이 스스로 연구를 할 수 있다는 것입니다.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)