冒泡排序算法 php,PHP排序算法:冒泡排序

时间复杂度:

最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)

最坏时间复杂度:O(n2)

稳定性:稳定

原理与实现:

a782b7f781837f47492eda3a62c0c7ed.png

我们假设将要被排序的数组$array具有如下初始值:

$array = [34,23,4,7,13,43,6,12,56,2];

我们按照从小到大的顺序来排列,实现后的数组:

Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 7 [4] => 12 [5] => 13 [6] => 23 [7] => 34 [8] => 43 [9] => 56 )

如果有N个元素,我们就要进行N-1趟比较,每次将最大的放在后面。这儿数组有10个元素,所以我们要进行9趟比较:

$length = count($array);

for($i = 0,$len = $length - 1; $i < $len; $i++){

}

外层循环进行9次比较,每次我们将从元素的第一个和该元素下一个进行比较,每次比较次数是N-该趟次数,比如进行了第5趟比较了,我们只需要对9-5=4次比较,因为后面的元素已经比较排序好了:

for($i = 0,$len = $length - 1; $i < $len; $i++){

for($j = 0; $j < $len - $i; $j++){

}

}

每趟的每一次比较,我们将二者教大的往后移:

$array = [34,23,4,7,13,43,6,12,56,2];

$length = count($array);

for($i = 0,$len = $length - 1; $i < $len; $i++){

for($j = 0; $j < $len - $i; $j++){

if($array[$j] > $array[$j + 1]){

$temp = $array[$j];

$array[$j] = $array[$j + 1];

$array[$j + 1] = $temp;

}

}

}

最后就得到了排序结果:

Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 7 [4] => 12 [5] => 13 [6] => 23 [7] => 34 [8] => 43 [9] => 56 )

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值