1

試験の復習中です。練習問題の1つは次のとおりです。

バブルソートを2回繰り返した後、配列の内容を指定します(配列の左側で最初に最小値が選択されていると仮定します)

43 16 99 12 48 14 62

与えられた答えは次のとおりです。

12 14 43 16 99 48 62

なぜこれが正解なのかを理解するためにメモを確認してきましたが、理由がわかりません。私はグーグルとウィキペディアでバブルソートの例を見つけました、そしてそれらは私には理にかなっていますが、それらはまた非常に単純です、これはより難しいです。

誰かが答えがどのように121443 16 99 48 62であるか説明できますか?

4

2 に答える 2

2

確かに見づらいので少し戸惑いましたが、彼らのやり方に気づいたら簡単です。それでも、それはばかげています。

一番小さい数字が左側になるように並べ替えていますが、右側から繰り返しています。したがって、最初のテストは14と62を比較することであり、スワッピングではありません。次に、48と14を比較し、交換します。次に、12と14を実行し、何もしません。左端に到達したら、右端に戻って2回目のパスを実行すると、指定されたソリューションが得られます。

于 2012-04-26T13:14:42.430 に答える
0

わかりました、これはあなたの先生と同じ答えを与えません、しかしこれは(私は願っています)バブルソートの明確な説明です:

写真は言葉よりもはるかに優れていることが多いため:http://www.algolist.net/Algorithms/Sorting/Bubble_sort

あなたの場合、最初の反復の後:

43> 16 => 16 43 99 12 48 14 62

43 <99 => 16 43 99 12 48 14 62

99> 12 => 16 43 12 99 48 14 62

99> 48 => 16 43 12 48 99 14 62

99> 14 => 16 43 12 48 14 99 62

99> 62 => 16 43 12 48 14 62 99

2回目の反復:

16 <43 => 16 43 12 48 14 62 99

43> 12 => 16 12 43 48 14 62 99

43 <48 => 16 12 43 48 14 62 99

48> 14 => 16 12 43 14 48 62 99

48 <62 => 16 12 43 14 48 62 99

62 <99 => 16 12 43 14 48 62 99

于 2012-04-26T13:22:49.280 に答える