원리: 데이터 집합의 경우 인접한 데이터의 크기를 비교하여 작은 값의 데이터를 앞에 배치하고 큰 값의 데이터를 뒤에 배치합니다. (다음은 모두 오름차순, 즉 작은 것부터 큰 것 순으로 정리했습니다)
예: $arr = array(6, 3, 8, 2, 9, 1);
$arr에는 6개의 데이터가 있으며, 쌍으로 비교 크기는 다음과 같습니다. 비교 라운드 수와 각 라운드의 비교 횟수에 주의하세요
첫 번째 정렬:
첫 번째 비교 6 및 3 비교 결과: 3 6 8 2 9 1
두 번째 비교 6과 3 비교 결과: 3 6 8 2 9 1
8과 2의 세 번째 비교 결과: 3 6 2 8 9 1
8과 9의 네 번째 비교 결과: 3 6 2 8 9 1
9와 1 비교 비교 결과: 3 6 2 8 1 9
1차 비교 요약: 1. 1차 정렬 및 비교 5회에서 작은 것부터 큰 것까지 순서를 얻지 못했습니다 2. 각 비교는 뒤로 이동하는 큰 숫자를 기반으로 하기 때문에 비교가 완료된 후 가장 큰 숫자가 마지막에 순위가 결정될 수 있습니다. (9는 이미 버블링되었으므로 다음 비교에서 비교할 필요가 없습니다.)
두 번째 정렬:
첫 번째 비교 3과 6 비교 결과: 3 6 2 8 1 9
6과 2의 두 번째 비교 결과: 3 2 6 8 1 9
세 번째 비교 결과 6과 8: 3 2 6 8 1 9
8과 1의 네 번째 비교 비교 결과: 3 2 6 1 8 9
2차 비교 요약: 1. 2차 정렬 및 4 비교 2. 8이 버블링되어 다음 라운드에서 비교할 필요가 없음 8
세 번째 정렬:
3과 2의 첫 번째 비교 결과: 2 3 6 1 8 9
3과 6의 두 번째 비교 결과: 2 3 6 1 8 9
세 번째 6과 1의 비교 결과: 2 3 1 6 8 9
3차 비교 요약: 1. 3차에서 3번 정렬 및 비교 결과 작은 것부터 큰 것까지 순서가 나오지 않았습니다. 2. 6이 버블링되어 다음 라운드에서 사용되지 않았습니다.
네 번째 정렬:
첫 번째 비교 2와 3 비교 결과: 2 3 1 6 8 9
두 번째 비교 3과 1 비교 결과: 2 1 3 6 8 9
4차 비교 요약: 1. 4차에서 정렬하고 2번 비교, 순서 없음 작은 것부터 큰 것까지 2. 3이 나왔고, 다음 라운드에서는 3을 비교할 필요가 없습니다
다섯 번째 정렬:
한 번의 비교 2와 1의 비교 결과: 1 2 3 6 8 9
5차 비교 요약: 1. 5차에서 정렬하고 1번 비교했는데 작은 것부터 큰 것까지 정렬이 안 됐어요. 2. 2가 버블링됐어요. 1이 하나밖에 남지 않아서 그럴 필요가 없어요. 이제 5회에 걸친 정렬을 통해 전체 정렬이 완료되었습니다.
위의 다섯 라운드 정렬과 여러 비교를 통해 결론을 추론할 이유가 있습니다.
길이가 N인 배열의 경우 N-1 라운드를 정렬해야 하며 각 i 라운드는 N-i를 비교해야 합니다. 타임스. 이를 위해 이중 루프 문을 사용할 수 있습니다. 외부 루프는 루프 라운드를 제어하고 내부 루프는 각 라운드의 비교 횟수를 제어합니다.
<?php function order($arr){ $count = count($arr); $temp = 0; //外层控制排序轮次 for($i=0; $i<$count-1; $i++){ //内层控制每轮比较次数 for($j=0; $j< $count-1-$i; $j++){ if($arr[$j] > $arr[$j+1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } $arr= array(6,3,8,2,9,1); $res = order($arr); var_dump($res);
관련 권장 사항:
php 버블 정렬 배열 정렬 방법을 작은 것부터 큰 것까지
위 내용은 PHP 버블 정렬 예제 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!