ユーチューブ動画

挿入ソートについて解説します。

 

ソースコード

解説

挿入ソートについて解説します。

 

プログラムを組み立てるときには、プログラムの解法が必要です。

プログラムの解法をアルゴリズムといいます。

代表的なアルゴリズムを覚えておくと、将来いろいろなプログラムを組むときのヒントになります。

ここでは、挿入ソートを紹介します。

 

ソートは並び替えです。

サンプルコードでは、配列dataを並び替えるため、sortメソッドを呼び出し、for文で並び替えた後の要素を出力しています。

なお、for文では拡張for文が利用されているので、配列dataの要素を1つ取り出し、変数elementに入れることで繰り返し出力しています。

 

挿入法は、ソートしていない部分とソートしている部分に分けるところから始まります。

ソートしていない部分から要素を一つ取り出し、ソートしている部分の中で適切な場所に挿入するアルゴリズムです。

 

1回目の繰り返しでは、最初のfor文で要素の1番目を取り出し、変数tmpに代入します。

変数tmpは60になります。

変数iから変数jに代入し、次のwhile文で、挿入する部分を探します。

1回目の繰り返しでは、tmp<data[1-1]になるので、0番目の要素と比較します。

しかしTmpのほうが大きいので、whileの処理には入りません。

また変数jの値は変わりません。よって、変数tmpの値をdata[1]に戻して、終わります。

続けていくと、70を取り出したとき、90を取り出したときには、変化しません。

最後の繰り返しで、4番目を取り出し、変数tmpに代入します。変数tmpは20になります。

変数jには4が入ります。While文は、tmp<data[4-1]、つまり20<90となり、継続条件を満たします。

すると、data[4]=data[4-1]となり、20が入っていたところに、90が入ります。Jの値が1減ります。

次のtmp<data[3-1]でも、20<70となり、継続条件を満たします。

すると、data[3]=data[3-1]となり、90が入っていたところに、70が入ります。

このように配列の要素をずらしていくと、jが1になったとき、data[1]=data[1-1]となり、

60が入っていたところに30が入り、jが0になって、whileを抜けます。

最後にdata[0]に変数tmpの20が挿入されて、ソートが終了します。

 

いかがでしょうか?

頭の中だけで考えずにぜひ書き出して考えてみてください。

以上、挿入ソートについて解説しました。

 

このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。