冒泡排序的基本思想

学习笔记 马富天 2017-11-05 13:13:44 77 0

【摘要】整个校招就要结束了,而我才刚刚开始准备校招,很多基础知识都已经该忘的都忘了,这两天要学习学习一下基础知识,本文记录一下自己整理的冒泡排序算法的例子。很多东西都看似简单,但是长时间不看的话,特别容易遗忘的。

  1. 	//	一次排序:把最大的数放置在后面
  2. 	$arr = array(8,3,6,9,1,2);
  3. 	$count = count($arr);
  4. 	for($i = 0;$i < $count - 1;$i ++)
  5. 	{
  6. 		if($arr[$i] > $arr[$i + 1])
  7. 		{
  8. 			$tmp = $arr[$i];
  9. 			$arr[$i] = $arr[$i + 1];
  10. 			$arr[$i + 1] = $tmp;
  11. 		}
  12. 	}
  13. 	var_dump($arr);	//	输出的顺序是:3,6,8,1,2,9,只把最大的数放置在底部
  14. 	//	第二次排序,则将 第二大的数放置在倒数第二位,此时:
  15. 	for($i = 0;$i < $count - 2;$i ++)
  16. 	{
  17. 		if($arr[$i] > $arr[$i + 1])
  18. 		{
  19. 			$tmp = $arr[$i];
  20. 			$arr[$i] = $arr[$i + 1];
  21. 			$arr[$i + 1] = $tmp;
  22. 		}
  23. 	}
  24. 	var_dump($arr);	//	第二次排序后:3,6,1,2,8,9
  25. 	//	依据这种思想,我们可以用一个 for 循环实现 n - 1 次排序,即如果一个数字中有 n 个数(n > 1),那么至少需要 n - 1 次排序。
  26. 	//	完整的冒泡排序算法:
  27. 	$arr = array(8,3,6,9,1,2);
  28. 	for($i = 0;$i < $count - 1;$i ++)	//	n 位数只需进行 n - 1 次排序
  29. 	{
  30. 		for($j = 0;$j < $count - $i - 1;$j ++)	//	每一次排序都将最大的放着最末尾
  31. 		{
  32. 			if($arr[$j] > $arr[$j + 1])
  33. 			{
  34. 				$tmp = $arr[$j];
  35. 				$arr[$j] = $arr[$j + 1];
  36. 				$arr[$j + 1] = $tmp;
  37. 			}
  38. 		}
  39. 	}
  40. 	var_dump($arr);

冒泡排序的基本思想:即有一个包含 n 数的乱序数列,若 n = 1,则无需排序;若 n = 2,则只需比较一次即可;若 n >= 3,则进行 n - 1 次排序,每一次排序将当前排序的最大的数放置在末尾即可。

版权归 马富天PHP博客 所有

本文标题:《冒泡排序的基本思想》

本文链接地址:http://www.mafutian.net/339.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 论文被拒的原因 》 下一篇《 PHP 中实习快速排序算法(快速排序思想) 》
分享到:

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码