排序算法之 - 冒泡排序 php

10 篇文章 0 订阅
5 篇文章 0 订阅

冒泡排序为最简单的排序算法之一,下边以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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值