演示数组为:

  $a = array(9,3,5,8,2,7);  //下标为0,1,2,3,4,5

演算进度描述:

  从数组的左侧开首,依次两两相比较相邻的2个数据的大大小小,如果开掘左边的比侧面的大,则将他们举办沟通。那样进行“风姿罗曼蒂克趟”之后,必然可以规定最大的三个数据放在最侧面。

  按此格局,对“剩余的数量”继续实行下意气风发趟,则势必能够明确那个剩余数量的最大值放在剩余地点的最左侧。

演示:

原始数组: 9 3 5 8 2 7
第一趟后: 3 5 8 2 7 9
第二趟后: 3 5 2 7 8 9
第三趟后: 3 2 5 7 8 9
第四趟后: 2 3 5 7 8 9
第五趟后: 2 3 5 7 8 9

 

 

 

 

 

 

规律描述:

  1,借使数组的多稀有n个;

  2,要拓宽相比较的“趟数”为n-1趟;

  3,每后生可畏趟要相比的数量个数都比前黄金年代趟少一个,第风姿浪漫趟要比较n个(即比较n-1次卡塔 尔(英语:State of Qatar);

  4,没二遍对比,借使开采“左侧数据”大于“左边数据”,就对这两侧实行置交换一下地方置。

代码演示如下:

<?php
$a = array(9,3,5,8,2,7);//下标为0,1,2,3,4,5
echo "排序之前:";print_r($a);

$n = count($a);//个数
for($i=0;$i<$n-1;++$i)//这就是n-1趟
{
    for($k=0;$k<$n-$i-1;++$k)//这就是比较的次数
    {
        if($a[$k]>$a[$k+1])
        {
            $t = $a[$k];
            $a[$k] = $a[$k+1];
            $a[$k+1] = $t;
        }
    }
}
echo "<br />排序之后:";print_r($a);

运作结果:

  排序早前:Array ( [0] => 9 [1] => 3 [2] => 5 [3]
=> 8 [4] => 2 [5] => 7 ) 
  排序之后:Array ( [0] => 2 [1] => 3 [2] => 5 [3]
=> 7 [4] => 8 [5] => 9 )

相关文章