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