您的位置:首页 > 编程语言 > PHP开发

PHP排序算法:冒泡排序

2016-07-08 00:00 357 查看
摘要: PHP冒泡排序算法实现

时间复杂度

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

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

稳定性:稳定

原理与实现:



我们假设将要被排序的数组$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 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  冒泡排序