优化后的冒泡
程序员文章站
2022-06-16 09:24:34
...
优化后的冒泡排序
function sort_aw($array = array()){
$tmp = 0;
//记录最后一次交换的位置
$lastExchangeIndex = 0;
//无序数列的边界,每次比较只需要到这里就可以了
$sortBorder = count($array)-1;
for($i = 0;$i<count($array);$i++){
//有序标记,每一轮的初始为true
$isSorted = true;
for($j = 0;$j<$sortBorder;$j++){
if($array[$j] > $array[$j+1]){
$tmp = $array[$j];
$array[$j] = $array[$j+1];
$array[$j+1] = $tmp;
//有元素交换,所以不是有序,标记为false
$isSorted = false;
// 把无序数列的边界跟新为最后一次交换元素的位置
$lastExchangeIndex = $j;
}
echo $j.PHP_EOL;
}
$sortBorder = $lastExchangeIndex;
echo '-'.$i.PHP_EOL;
if($isSorted){
break;
}
}
return $array;
}
$arr = [3,45,55,22,98,65,4,2,1,5,6,7,8];
print_r( sort_aw($arr)) ;