博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】整个校招就要结束了,而我才刚刚开始准备校招,很多基础知识都已经该忘的都忘了,这两天要学习学习一下基础知识,本文记录一下自己整理的冒泡排序算法的例子。很多东西都看似简单,但是长时间不看的话,特别容易遗忘的。
// 一次排序:把最大的数放置在后面
$arr = array(8,3,6,9,1,2);
$count = count($arr);
for($i = 0;$i < $count - 1;$i ++)
{
if($arr[$i] > $arr[$i + 1])
{
$tmp = $arr[$i];
$arr[$i] = $arr[$i + 1];
$arr[$i + 1] = $tmp;
}
}
var_dump($arr); // 输出的顺序是:3,6,8,1,2,9,只把最大的数放置在底部
// 第二次排序,则将 第二大的数放置在倒数第二位,此时:
for($i = 0;$i < $count - 2;$i ++)
{
if($arr[$i] > $arr[$i + 1])
{
$tmp = $arr[$i];
$arr[$i] = $arr[$i + 1];
$arr[$i + 1] = $tmp;
}
}
var_dump($arr); // 第二次排序后:3,6,1,2,8,9
// 依据这种思想,我们可以用一个 for 循环实现 n - 1 次排序,即如果一个数字中有 n 个数(n > 1),那么至少需要 n - 1 次排序。
// 完整的冒泡排序算法:
$arr = array(8,3,6,9,1,2);
for($i = 0;$i < $count - 1;$i ++) // n 位数只需进行 n - 1 次排序
{
for($j = 0;$j < $count - $i - 1;$j ++) // 每一次排序都将最大的放着最末尾
{
if($arr[$j] > $arr[$j + 1])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
var_dump($arr);
冒泡排序的基本思想:即有一个包含 n 数的乱序数列,若 n = 1,则无需排序;若 n = 2,则只需比较一次即可;若 n >= 3,则进行 n - 1 次排序,每一次排序将当前排序的最大的数放置在末尾即可。
版权归 马富天PHP博客 所有
本文标题:《冒泡排序的基本思想》
本文链接地址:http://www.mafutian.net/339.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |