Rumah > Artikel > pengaturcaraan harian > 冒泡排序详细解析
冒泡排序
对于刚接触编程和算法的朋友来说,对于排序算法可能不太清晰,接下来我们一起来分析下冒泡排序。
冒泡排序的原理是什么了?
遍历一个数组,在此过程中,将相邻的两个单元的值进行比较:如果前面的比后面的大,则将两个值交换位置。这个过程到最后,数组中的最大值一定放在最后位置了。
如果将上述过程再进行一遍,则又可以确定剩余数据中的最大值放在倒数第二的位置。
然后将上述过程继续进行一遍,则可以继续确定剩余数据中的最大值放在倒数第三的位置。
依次类推。。。。。
图示:
原始数组 |
18 | 22 | 12 |
15 | 23 | 9 |
第一趟 | 18 |
22 | 12 | 15 | 9 | 23 |
第二趟 | 18 | 22 | 12 | 9 | 15 | 23 |
第三趟 | 18 | 22 | 9 | 12 | 15 | 23 |
第四趟 | 18 | 9 | 12 | 15 | 22 | 23 |
第五趟 | 9 | 12 | 15 | 18 | 22 | 23 |
代码演示:
$arr1 = array(18,22,12,15,23,9); $n = count($arr1); //控制要进行的躺数 for($i = 0;$i < $n-1;$i++){ //在每一趟里面,控制进行比较的次数 for($k = 0;$k < $n-1-$i;$k++){ if ($arr1[$k] > $arr1[$k+1]) { $temp = $arr1[$k]; $arr1[$k] = $arr1[$k+1]; $arr1[$k+1] = $temp; } } }
最后让我们来总结一下规律:
1.要进行从头到尾两两比较并进行交换位置的趟数为$n-1趟,$n是总个数(数组长度)
2.每次都对相邻的两个数据进行大小比较,如果需要,就交换他们的位置!
3.每趟要比较的次数都比前一趟少1次,第一趟要比较的次数为:$n-1
Atas ialah kandungan terperinci 冒泡排序详细解析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!