$arr = array(2,1,56,3,5,6,10,21,11);
//$arr = array(2,1,5,3,4,7,8,9,10);
$num = 0;
$data = array();
for ($i = 0; $i < count($arr) - 1; $i++) {
$fan = true;
for ($j = 0; $j < count($arr) - $i - 1; $j++){
if ($i > 0){
//判断上次循环中从第几位开始不用比较的
if (isset($data[$i - 1][$j+1]) && $data[$i - 1][$j+1] > 0){
break;
}
}
$num+=1;
if ($arr[$j] > $arr[$j+1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
$fan = false;
unset($data[$i]);//清空本轮循环中之前顺序不用改变的数据
} else{
//把不用改变位置的循环数据放入数组中
$data[$i][$j] = 1;
}
}
//截止循环操作
if ($fan){
break;
}
}
echo '执行次数'.$num;
dump($arr);