php冒泡算法详解

- PHP语言 - 280 阅 Hot
<?php
$arr = array(['name'=>'小明','grade'=>'99'],
               ['name'=>'小芳','grade'=>'120'],
               ['name'=>'小强','grade'=>'101'],
               ['name'=>'小兰','grade'=>'112'],
               ['name'=>'小妹','grade'=>'108']);
$len = count($arr);

for($i=1;$i<$len;$i++){
	for($j=0;$j<$len-$i;$j++){
		if($arr[$j]['grade']>$arr[$j+1]['grade']){
			$temp = $arr[$j];
			$arr[$j] = $arr[$j+1];
			$arr[$j+1] = $temp;
		}
	}
}

var_dump($arr);

?>
//外循环第一次比较抛出最小(或最大的)的。内循环一共循环4次。
//外循环第二次比较抛出倒数第二小的,一共循环3次,最后一个不用比较(为什么不用再循环4次;
因为第一次外循环过后,数组最后一位已经是最大或者最小的了,这时需要比较的元素数是n-1,
假如数组元素是5个,5-1=4,4个元素只用比较相邻的元素3次即可!)
//外循环第三次比较抛出倒数第三小的,内循环一共循环2次,
//外循环第四次比较抛出倒数第四小的,内循环只循环一次。
//这时已经排序完毕。


0 +1

文章来源 " zsl 整理 "

原文地址 " http://www.zsl123.cn/index/info/index/id/40.html "