PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 开发技巧 >> 

php冒泡算法对数组排序

php冒泡算法对数组排序

来源:phperz.com  作者:phperz.com  发布时间:2010-05-26
这是在一家公司面试时遇到的php面试题,用冒泡算法对数组进行排

  冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。   由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。   用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。   冒泡排序是稳定的。

 

这是在一家公司面试时遇到的php面试题,用冒泡算法对数组进行排序,

冒泡算法其原理我想是利用二次循环对每一维元素逐个遍历,可以想想如果有10个元素,最后一个元素是最小的1的话,那么要想把最小的1提升到第一位那么他要进行10次位置变化才能到达。

<?php
//冒泡排序(一维数组)
function bubble_sort($array){
 $count = count($array);
 if ($count <= 0) return false;
 for($i=0; $i<$count; $i++){
  //echo "1:";
  //print_r($array);
  for($j=$count-1; $j>$i; $j--){
   
   if ($array[$j] < $array[$j-1]){
    $tmp = $array[$j];
    $array[$j] = $array[$j-1];
    $array[$j-1] = $tmp;
   }
   //echo "2:";
   //print_r($array);
  }
 }
 return $array;
}
//使用实例
$_array = array('5', '8' ,'6','4');
$_array = bubble_sort($_array);
print_r($_array);

?>


延伸阅读:
PHP实现常见排序算法
PHP二分查找法
PHP数组学习排序全接触
Tags: php   冒泡算法   数组   排序   算法  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号