冒泡排序法是一种很基础的排序方法,也是面试题中经常问到的一道题目.今天做了一下简单的分析,具体代码和思路如下
1 <?php 2 3 /*思路: 4 *按照元素顺序循环比较, 5 * 当前元素为$array[$i],取后面的元素与 6 * $array[$i]比较,所以应该从第$j($j=$i+1)个元素开始比较; 7 * 8 *比较$array[$i]和$array[$j]的大小,将较大的元素放到前面,所以要使用中间变量$tmp 9 *过渡 10 * 11 *因为$i次循环后,只能保证$array[$i]前面的元素比$array[$i]大,并且按照从大到小的顺序排列,在它后面的 12 *元素不能保证是按照同样的顺序排列,所以要比较(count($array)-1)次,自己不和 13 *自己比较 14 */ 15 $array = array(12,45,877,35,545,87,32,2,48,966,252); 16 $num = count($array); 17 for($i=0;$i<$num-1;$i++){ 18 for($j=$i+1;$j<$num;$j++){ 19 if($array[$i]<$array[$j]){ 20 $tmp = $array[$i]; 21 $array[$i] = $array[$j]; 22 $array[$j] = $tmp; 23 } 24 } 25 } 26 //排序后下后结果:Array ( [0] => 966 [1] => 877 [2] => 545 [3] => 252 [4] => 87 [5] => 48 27 //[6] => 45 [7] => 35 [8] => 32 [9] => 12 [10] => 2 ) 28 print_r($array);
时间: 2024-10-10 01:05:15