冒泡排序为最简单的排序算法之一,下边以php为示例解释说明冒泡排序。
1.描述
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
*冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。
2.逻辑
从无序区透过交换找出最小元素放到有序区前端
1、先将数组的第一个元素,与它身后所有元素相比
2、如果第一个元素与相比元素大,交换位置,保持第一个元素始终最小
3、开始比较第二个元素,重复1、2步骤
4、重复3步骤,直到最后一个元素,得出新数组,从小到大排序完成
3.代码
$arr = [100, 20, 50, 49, 29, 15, 22, 8, 101, 50];
function bubbleSort($arr)
{
$arrSize = count($arr);
for ($i = 0; $i < $arrSize; $i++) {
for ($j = $i + 1; $j < $arrSize; $j++) {
if ($arr[$i] > $arr[$j]) {
$temp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $temp;
}
}
}
return $arr;
}
var_dump(bubbleSort($arr));
//array(10) { [0]=> int(8) [1]=> int(15) [2]=> int(20) [3]=> int(22) [4]=> int(29) [5]=> int(49) [6]=> int(50) [7]=> int(50) [8]=> int(100) [9]=> int(101) }
[8, 15, 20, 22, 29, 49, 50, 50, 100, 101];
附上参考连接
菜鸟教程《十大编程算法助程序员走上高手之路》
https://www.runoob.com/w3cnote/the-friendship-algorithm-the-big-bang-theory.html