从麦田大大那里看到的,具体请看冒泡排序、快速排序 Java版本
冒泡排序算法的运作如下:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
复杂度:
冒泡排序最好的时间复杂度为0(n)
冒泡排序最坏的时间复杂度为0(n2) //n的平方
因此冒泡排序总的平均时间复杂度为0~n2
冒泡排序是就地排序,且它是稳定的。
这里引发一个思考,先判断$order还是先循环好,请看下节
<?php
class
Test {
public function
sortlist($ary,$order=
'ASC'
) {
if
($order==
'ASC'
){
for
($i = 0; $i < count($ary); $i++) {
//执行count次
for
($j = 0; $j < count($ary)-$i-1; $j++) {
if
($ary[$j]>$ary[$j+1]){
//前一个数和后一个数比较
$a = $ary[$j];
$ary[$j] = $ary[$j+1];
$ary[$j+1] = $a;
}
}
}
}
else
{
for
($i = 0; $i < count($ary); $i++) {
//执行count次
for
($j = 0; $j < count($ary)-$i-1; $j++) {
if
($ary[$j]<$ary[$j+1]){
//前一个数和后一个数比较
$a = $ary[$j];
$ary[$j] = $ary[$j+1];
$ary[$j+1] = $a;
}
}
}
}
return
$ary;
}
}
for
($i=0;$i<1000;$i++){
$ary[] = rand(0,999999);
}
// $ary = array(19432,1,9,5,4,10,45);
$test =
new
Test();
print_r($test->sortlist($ary,
'desc'
));
?>

本文详细介绍了冒泡排序算法的工作原理及实现过程,并提供了PHP代码示例。包括如何通过比较和交换相邻元素来对数组进行升序或降序排列。
1200

被折叠的 条评论
为什么被折叠?



