Rumah  >  Artikel  >  pengaturcaraan harian  >  冒泡排序详细解析

冒泡排序详细解析

**熬夜选手
**熬夜选手asal
2020-05-01 15:42:30365semak imbas

冒泡排序

对于刚接触编程和算法的朋友来说,对于排序算法可能不太清晰,接下来我们一起来分析下冒泡排序。

冒泡排序的原理是什么了?

遍历一个数组,在此过程中,将相邻的两个单元的值进行比较:如果前面的比后面的大,则将两个值交换位置。这个过程到最后,数组中的最大值一定放在最后位置了。

如果将上述过程再进行一遍,则又可以确定剩余数据中的最大值放在倒数第二的位置。

然后将上述过程继续进行一遍,则可以继续确定剩余数据中的最大值放在倒数第三的位置。

依次类推。。。。。

图示:

原始数组
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:PHP数组详解(敲黑板)Artikel seterusnya:选择排序算法详细解析