Hello 算法!
算法学习之路,开坑!
思路
- 给定一个数组,内容都为数字
- 循环整个数组两两判断左边是否大于右边
- 大于则左右交换
- 小于则跳过
- 若该轮循环没有进行过交换,说明已为有序数组
- 每一轮循环将找到当前最大的一个数,放在了数组最后一个键
- 重复 count-1 次,由于是两两相比重复 count-1 次循环后只剩1个键,必定是最小的
- 最后结束外层循环,得到一个升序数组
代码
<?php
$array = array(2,4,1,7,3,9,6);
$switch_count = 0;
for($i=0;$i<$count_array-1;$i++){
for($j=0;$j<($count_array-$i-1);$j++){ //每次循环确定一个最大的在右边
if($array[$j] > $array[$j + 1]){ //两两相比,大的放右边
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
$switch_count++;
}
}
if($switch_count == 0){
break;
}
}
var_dump($array);
?>