PHP插入排序
冒泡排序
对数组$arr = [9,7,2,77,31]按从小到大进行排序
$arr = [9,7,2,77,31];
$length = count($arr);
for($i=1;$i<$length;$i++)
{
$tmp = $arr[$i];
for ($j=$i-1;$j>=0;$j--)
{
if($tmp<$arr[$j])
{
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
}
else
{
break;
}
}
}
print_r($arr);
得到结果
Array
(
[0] => 2
[1] => 7
[2] => 9
[3] => 31
[4] => 77
)
比较,逻辑大致是这样的。默认第一个元素是最小值,所以从第二个元素开始一次与前面的元素进行比较,插入到合适的位置
-
i=1-
j=0时;将7与9进行比较。发现7比9小,交换位置,此时得到数组[7,9,2,77,31]
-
-
i=2-
j=1时;将2与9进行比较。发现2比9小,交换位置,此时得到数组[7,2,9,77,31] -
j=0时;将2与7进行比较。发现2比7小,交换位置,此时得到数组[2,7,9,77,31]
-
-
i=3-
j=2时;将77与9进行比较。发现77比9大,跳出本次循环,此时数组依然为[2,7,9,77,31]
-
-
i=4-
j=3时;将31与77进行比较。发现31比77小,交换位置,此时得到数组[2,7,9,31,77] -
j=2时;将9与31进行比较。发现31比9大,跳出本次循环,此时数组依然为[2,7,9,31,77]
-

浙公网安备 33010602011771号