当前位置: 首页 > web开发 > PHP > 正文

PHP实现冒泡排序

时间:2017-01-03

《大话数据结构》中这样介绍冒泡排序的基本思想:两两比较相邻元素的关键字,如果反序则交换,直到没有反序的记录为止。也就是相邻元素之间两两比较,如果前一个值大于后一个(或者前一个值小于后一个),则交换顺序,所以这样的话,最终的结果是从小到大(或者从大到小)的排序。

当然php有非常强大的排序函数,比如sort,asort等,所以也在运用php的时候也用不着自己写排序函数,这里只是用php实现下冒泡排序的思想。

 1 <?php
 2     include_once './header.php';
 3 
 4     $bub = array(9,5,8,3,4,6,1,2,7,);
 5     $sortarr = $asortarr = $bub;
 6 
 7     //冒泡排序
 8     $flag = true;
 9     for($i=0; $i<count($bub)-1 && $flag; $i++){ //当flag为false时,已经排序完成,后面不再循环
10     
11         $flag = false;
12         for($j=count($bub)-2; $j>=$i; $j--){
13             
14             if($bub[$j]>$bub[$j+1]){  //前面的数大于后面的数,交换位置
15             
16                 $temp = $bub[$j];
17                 $bub[$j] = $bub[$j+1];
18                 $bub[$j+1] = $temp;
19                 $flag = true;
20             }
21         }
22     }
23     //对数组单元从低到高重新排序
24     sort($sortarr);
25     //对数组重新排序并保持索引关系
26     asort($asortarr);
27 
28     echo '冒泡:';
29     echo '<pre>';
30     var_dump($bub);
31 
32     echo 'sort:';
33     echo '<pre>';
34     var_dump($sortarr);
35 
36     echo 'asort:';
37     echo '<pre>';
38     var_dump($asortarr);
39 ?>

代码的输出结果:

来源:http://www.cnblogs.com/melonwong/p/6231305.html