<?php
date_default_timezone_set('Asia/Shanghai');
function bubSort2($array){
//记录最后一次交换的位置
$lastExchangeIndex = 0;
//无序数列的边界,每次比较只需要比到这里为止
$count = count($array);
$sortBorder = $count-1;
for ($i=0;$i<$count;$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;
}
}
$sortBorder = $lastExchangeIndex;
if($isSorted){
break;
}
}
return $array;
}
function bubSort1($array){
$count = count($array);
for ($i=0;$i<$count;$i++){
//有序标记,每一轮的初始是true
$isSorted = true;
for($j=0; $j<$count-$i-1; $j++){
if($array[$j]>$array[$j+1]){
$tmp = $array[$j];
$array[$j]=$array[$j+1];
$array[$j+1] = $tmp;
//有元素交换,所以不是有序,标记变为false
$isSorted = false;
}
}
if($isSorted){
break;
}
}
return $array;
}
function bubSort0($array){
$count = count($array);
for ($i=0;$i<$count;$i++){
//有序标记,每一轮的初始是true
$isSorted = true;
for($j=0; $j<$count-$i-1; $j++){
if($array[$j]>$array[$j+1]){
$tmp = $array[$j];
$array[$j]=$array[$j+1];
$array[$j+1] = $tmp;
}
}
}
return $array;
}
$start = microtime(true);
$tmpArr = [3,4,2,1,5,6,7,8];
$resArr = bubSort2($tmpArr);
$end = microtime(true);
var_dump((($end-$start)*1000).'ms');
冒泡排序优化
最新推荐文章于 2022-12-26 11:01:29 发布