私はphpでバブルソート戦略について勉強しています。コードはこちらです。メインループでは、2つの条件が真である必要があるため、ループが実行されます。変数は、ループを実行したくないためであることを理解しています配列がすでにソートされていても最大反復ですが、最大反復に達したかどうかを確認する必要がある理由がわかりませんでしたか? 変数をチェックできないのはなぜですか (私の仮定では、変数に何らかの問題が発生する可能性があり、永遠のループは必要ありません)。いずれにせよ、メインループで変数だけをチェックする必要がない理由を教えていただければ、とても感謝しています。ありがとうございました。良い一日を。
function sort(array &$vec)
{
$sorted = false;
$size = sizeof($vec);
for($i=0; $i<=$size-2 && !$sorted; $i++)
{
$maybeSorted = true;
$from = 0;
$till = $size-1-$i;
for($j=$from; $j<$till; $j++)
{
if($vec[$j]>$vec[$j+1])
{
$maybeSorted = false;
$temp = $vec[$j];
$vec[$j] = $vec[$j+1];
$vec[$j+1] = $temp;
}
}
if($maybeSorted)
{
$sorted = true;
}
}
}