[PHP算法]冒泡排序

基本概念

  • 依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
  • 重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。

例子

<?php
$a1 = array(2,9,0,7,1);

function bubble($arr){
    $num = count($arr);
    for($i = 0;$i < $num;$i++){
        for($j = 0;$j < $num - 1;$j++){
            if($arr[$j] > $arr[$j + 1]){
                //较小的值赋值给$tmp
                $tmp = $arr[$j + 1];
                $arr[$j + 1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    return $arr;
}
var_dump(bubble($a1));

输出的结果为:

D:\wwwroot\test\test.php:18:
array (size=5)
  0 => int 0
  1 => int 1
  2 => int 2
  3 => int 7
  4 => int 9

标签: 无

发表评论: