排序算法__冒泡排序

 

 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 */
View Code

 

 

该算法使用了交换操作,仅使用了一个辅助单元, 因此其算法空间复杂度为O(1)

 

时间复杂度如下所示:

T(n) = ∑i=1n-1 (n-i) = n(n-1) / 2 = O(n2

 

posted @ 2017-02-22 01:05  _logan  阅读(119)  评论(0编辑  收藏  举报