php冒泡排序学习记录日志

$arr =[7,4,5,11,3];

function bubbleSort($arr) {

 $len = count($arr);//读取数组的数目
 
//慢的原因就是因为要执行数组的长度减1次循环  ,因为他的机制就是两两比较排序

  for($i = 1; $i < $len; $i++) {

 //外循环先执行一次,内循环执行完,此时开始调整数组元素的位置

 for($j = 0; $j < $len-$i; $j++) {

	 if($arr[$j]>$arr[$j+1]){

			$tmp = $arr[$j+1];

			$arr[$j+1]=$arr[$j];

			$arr[$j] =$tmp;
		 }
 	   }
	}
	return $arr;
}
var_dump(bubbleSort($arr));//调用函数

=============================================================
个人理解:
//$arr =[7,4,5,11,3];
//外循环第一次循环: 当i=1;判断i是否小于5,是就执行内循环

//内循环第一次循环:当j=0;判断j是否小于5-1,即j是否小于4,是就执行内循环的判断,
//判断数组的arr0是否大于arr1,7>4,所以执行
//因为7>4,所以4要先走开,4就走去了旁边的空位,然后7才能去4的位置,4再去7的位置,
//内循环第一次的结果就是 :[4,7,5,11,3],

//执行第二次内循环,此时j=1, j<4, 判断7(arr[1])是否大于5(arr[2]), 7>5,所以执行
//因为7(arr[1])>5(arr[2]),所以5要先走开,7才能去5的位置,5再去7的位置
//内循环的第二次结果 :[4,5,7,11,3]

//执行第三次内循环:此时j=2,j<4,判断7(arr[2])是否大于11(arr[3]),7<11。所以下面的位置不用调整,站在原位置
//内循环第三次结果:[4,5,7,11,3]

//执行第四次内循环 :此时j=3,j<4,判断11(arr[3])是否大于3(arr[4]),大于。所以要调整位置:
//结果为[4,5,7,3,11]
//至此,第一次外循环执行完毕

//开始第二次的外循环 ,当i=2,判断i是否小于5,是就执行内循环
//。。然后内循环又开始循环。。

//第二次外循环的结果为:[4,5,3,7,11];
//第三次外循环的结果为:[4,3,5,7,11];
//第四次外循环的结果为:[3,4,5,7,11];
//刚刚好执行完,排序完成!!
//记录学习php日程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值