算法学习之路 | 冒泡排序[Php]

Posted ·513 Views·477 Words

Hello 算法!

算法学习之路,开坑!

 

思路

  1. 给定一个数组,内容都为数字
  2. 循环整个数组两两判断左边是否大于右边
    1. 大于则左右交换
    2. 小于则跳过
  3. 若该轮循环没有进行过交换,说明已为有序数组
  4. 每一轮循环将找到当前最大的一个数,放在了数组最后一个键
  5. 重复 count-1 次,由于是两两相比重复 count-1 次循环后只剩1个键,必定是最小的
  6. 最后结束外层循环,得到一个升序数组

 

代码

<?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);

?>

Comments

Leave a comment to join the discussion