江邊望海的技術人生
分享真知
使用php实现冒泡排序

冒泡排序是非常经典的算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

比较相邻的元素。如果第一个比第二个大,就交换他们两个。对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上,针对所有的元素重复以上的步骤,除了最后一个,持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

假如10个数字。先找出10个数字中最大的抛出去,剩下9个数字,再找出9个数字最大的跑出去,剩下8个数字,以此类推……

怎么找出一组数最大数字?将第1个与第2个比,大的往后排,将第2个与第3个比,大的往后排,以此类推……最后一个就是最大的。

思路一

<?php
$b   = array('4', '3', '8', '9', '2', '1');
$len = count($b);
for ($k = 0; $k <= $len; $k++) {
    for ($j = $len - 1; $j > $k; $j--) {
        if ($b[$j] < $b[$j - 1]) {
            $temp      = $b[$j];
            $b[$j]     = $b[$j - 1];
            $b[$j - 1] = $temp;
        }
    }
}
var_dump($b);

思路二

<?php
$b   = array('4', '3', '8', '9', '2', '1');
$len = count($b);
for ($k = 1; $k < $len; $k++) {
    for ($j = 0; $j < $len - $k; $j++) {
        if ($b[$j] > $b[$j + 1]) {
            $temp      = $b[$j + 1];
            $b[$j + 1] = $b[$j];
            $b[$j]     = $temp;
        }
    }
}
var_dump($b);

冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。

冒泡排序1

选择排序的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,不断重复这个过程,直到只剩一个记录为止。

冒泡排序2