交換法のフローチャート

学習の目的

  • 1.交換法のフローチャート

  • 2.昇順で整列する方法

  • 3.降順で整列する方法

1.交換法のフローチャート

それでは、交換法のフローチャートを確認しましょう。

交換法のフローチャート

フローチャートの各部分を確認しましょう。


data[n](数値を比較する範囲での最大値)の確定

フローチャートは二重ループになっています。

その内側の繰返しで、一つの要素を確定します。

data[n]を確定する処理

data[i]とdata[i+1]で比較してるね。

隣同士の比較だね。

これで、data[i]の方が大きかったら交換するんだ。

この繰り返しで、一つの要素が確定するんです。

そして、この作業を繰り返し行うことで、整列が完成します。

確定する処理を繰り返す

変数nが重要です。

なるほど、カウントダウン方式を使えばいいんだね。

一つ確定するたびに、nが減っていきますね。

nの値が減るから、比較する範囲も減っていっているね。

確定した部分を比較する事がないようにかな?よくできてるなぁ。

2.昇順で整列する方法

フローチャートに、「data[i]とdata[i+1]を交換する」という処理があるのがわかりますか?

はい、ここにあります。

フローチャートでは簡単に書きましたが、実は交換の手順にはちょっと工夫が必要です。

例えば、変数Aと、変数Bの内容を交換したいときはどうすればいいと思いますか?

こんな感じかな?

この流れで交換すると、変数Aの内容が消されてしまうんです。

あっ本当だ。

変数は代入をするとどうしても消えてしまいます。

なので、代入先の変数の中身を一旦退避する必要があります。

データの交換は以下のように処理を書きましょう。

データの交換

3.降順で整列する方法

降順で整列する方法について考えてみましょう。

そういえば、昇順に整列する方法しか教えてもらっていないね。

当然プログラムも変わるわけだ。

でも、難しく考えないでください。

ほんの少し変えるだけでできるんですよ。

昇順にするときは、隣同士で降順になっているところを交換するから…

逆に、昇順になっているところを交換するとか!?

その通りです。では、プログラムを確認してみましょう。

交換法で降順に整列

あれ…どこが変わったんだ?

隣同士で比較する部分の条件式が「>」から「<」になってる!

え??それだけ??

実は、昇順と降順に整列するアルゴリズムの違いはそこだけなんです。

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる