冒泡排序算法原理:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡过程
<?php
function BubbleSort($arr){
$length = count($arr);
while($length >0){
for($i=0;$i<$length-1;$i++){
if($arr[$i]>$arr[$i+1]){
$temp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $temp;
}
}
$length--;
}
return $arr;
}
$arr = array ( 6 , 5 , 3 , 1 , 8 , 7 , 2 , 4 ) ;
var_export ( BubbleSort ( $arr )) ;
?>
代码执行结果: array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6, 6 => 7, 7 => 8, )
冒泡排序算法流程图
插入排序特性:
- 最差时间复杂度: O(n 2 )
- 最优时间复杂度: O(n)
- 平均时间复杂度: O(n 2 )
- 最差空间复杂度: 总共O(n) ,需要辅助空间O(1)
- 排序是否稳定的: 是