Principle: For a set of data, compare the sizes of adjacent data, put the data with small values in the front and the data with large values in the back. (The following are all arranged in ascending order, that is, from small to large)
Example: $arr = array(6, 3, 8, 2, 9, 1);
$ arr has 6 data, the size of the pairwise comparison is as follows, pay attention to the number of comparison rounds and the number of comparisons in each round
The first round of sorting:
The first comparison 6 and 3 comparison results: 3 6 8 2 9 1
The second comparison result of 6 and 3: 3 6 8 2 9 1
The third comparison result of 8 and 2: 3 6 2 8 9 1
The fourth comparison, the comparison result between 8 and 9: 3 6 2 8 9 1
The fifth comparison, the comparison result between 9 and 1: 3 6 2 8 1 9
Summary of one round of comparison: 1. In the first round of sorting and comparison 5 times, no ordering from small to large was obtained. 2. Because each comparison is based on the large number moving backward, so after the comparison is completed, it can be determined that the large number is ranked last ( 9 has bubbled up, so there is no need to compare in the next round of comparison)
Second round of sorting:
First comparison 3 and 6 comparison results: 3 6 2 8 1 9
The second comparison of 6 and 2 results: 3 2 6 8 1 9
The third comparison of 6 and 8 results: 3 2 6 8 1 9
The fourth comparison 8 and 1 comparison results: 3 2 6 1 8 9
Summary of the second round of comparison: 1. Sort the second round and compare 4 times , did not get the sorting from small to large 2. 8 bubbled up, there is no need to compare 8 in the next round
The third round of sorting:
The first comparison 3 and 2 comparison result: 2 3 6 1 8 9
The second comparison, the comparison result between 3 and 6: 2 3 6 1 8 9
The third comparison, the comparison result between 6 and 1: 2 3 1 6 8 9
Summary of the third round of comparison: 1. In the third round of sorting and comparison 3 times, no order from small to large was obtained 2. 6 bubbled up, so there is no need to compare 6 in the next round
The fourth round of sorting:
The first comparison, the comparison result between 2 and 3: 2 3 1 6 8 9
The second comparison, the comparison result between 3 and 1: 2 1 3 6 8 9
Summary of the fourth round of comparison: 1. Sorting in the 4th round and comparing 2 times, no order from small to large was obtained 2. 3 bubbled up, so there is no need to compare 3 in the next round
The fifth round of sorting:
The first comparison 2 and 1 comparison results: 1 2 3 6 8 9
The fifth round of comparison summary: 1 .The 5th round of sorting and 1 comparison did not obtain the sorting from small to large. 2. 2 bubbled out. Since there is only one 1 left, there is no need to compare. So far, the entire sorting has been completed through 5 rounds of sorting.
Through the above five rounds of sorting and several comparisons, we have reason to infer a conclusion:
For an array of length N, we need to sort N-1 Rounds, each i round needs to be compared N-i times. We can use a double loop statement for this. The outer loop controls the number of loop rounds, and the inner loop controls the number of comparisons in each round.
<?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);
Related recommendations:
php multiple solutions to implement bubble sorting
php bubble sorting array sorting method from small to large
php array bubble sort algorithm example code
The above is the detailed content of PHP bubble sorting example sharing. For more information, please follow other related articles on the PHP Chinese website!