1 <?php 2 3 $arr=array(1,43,54,62,21,66,32,78,36,76,39); 4 5 function bubbleSort($arr) 6 { 7 $len=count($arr); 8 //设置一个空数组 用来接收冒出来的泡 9 //该层循环控制 需要冒泡的轮数 10 for($i=1;$i<$len;$i++) 11 { //该层循环用来控制每轮 冒出一个数 需要比较的次数 12 for($k=0;$k<$len-$i;$k++) 13 { 14 if($arr[$k]>$arr[$k+1]) 15 { 16 $tmp=$arr[$k+1]; 17 $arr[$k+1]=$arr[$k]; 18 $arr[$k]=$tmp; 19 } 20 } 21 } 22 return $arr; 23 } 24 25 $arr = bubbleSort($arr); 26 27 echo "<pre>"; 28 print_r($arr); 29 30 31 32 33 34 /* 35 Array 36 ( 37 [0] => 1 38 [1] => 21 39 [2] => 32 40 [3] => 36 41 [4] => 39 42 [5] => 43 43 [6] => 54 44 [7] => 62 45 [8] => 66 46 [9] => 76 47 [10] => 78 48 ) 49 */
该算法使用了交换操作,仅使用了一个辅助单元, 因此其算法空间复杂度为O(1)
时间复杂度如下所示:
T(n) = ∑i=1n-1 (n-i) = n(n-1) / 2 = O(n2)