PHP排序算法:冒泡排序
2016-07-08 00:00
357 查看
摘要: PHP冒泡排序算法实现
最坏时间复杂度:O(n2)
稳定性:稳定
我们假设将要被排序的数组$array具有如下初始值:
我们按照从小到大的顺序来排列,实现后的数组:
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趟比较:
外层循环进行9次比较,每次我们将从元素的第一个和该元素下一个进行比较,每次比较次数是N-该趟次数,比如进行了第5趟比较了,我们只需要对9-5=4次比较,因为后面的元素已经比较排序好了:
每趟的每一次比较,我们将二者教大的往后移:
最后就得到了排序结果:
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 7 [4] => 12 [5] => 13 [6] => 23 [7] => 34 [8] => 43 [9] => 56 )
时间复杂度:
最优时间复杂度: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 )
相关文章推荐
- 冒泡排序
- C#冒泡法排序算法实例分析
- C++实现对输入数字组进行排序
- 用PHP写的一个冒泡排序法的函数简单实例
- js实现数组冒泡排序、快速排序原理
- 分享javascript实现的冒泡排序代码并优化
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- c++冒泡排序示例分享
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- python冒泡排序算法的实现代码
- c语言实现冒泡排序、希尔排序等多种算法示例
- c#冒泡排序示例分享
- 冒泡排序算法及Ruby版的简单实现
- javascript冒泡排序小结
- 浅谈php冒泡排序
- C语言冒泡排序法心得
- PHP实现冒泡排序的简单实例
- Javascript冒泡排序算法详解
- C++冒泡排序算法实例
- C语言的冒泡排序和快速排序算法使用实例