並べ替えのアルゴリズム
十進BASIC_プログラミング へ戻る
大学生のための数学 へ戻る
2013.08.19


  ソートのアルゴリズムには、 たくさんの種類がありますが、 その中でも理解しやすいものを、 十進BASIC で4つ紹介したいと思います。


バブルソート
  数列の左から1番目と2番目にある数の大きさを比較して、 2番目の方が1番目よりも小さくならないように、 必要があれば入れ替える。 次に、 左から2番目と3番目にある数の大きさを比較して、 3番目の方が2番目よりも小さくならないように、 必要があれば入れ替える。 このような操作を繰り返して最後までいったら、 今度は、 左から2番目と3番目にある数の大きさを比較して、 3番目の方が2番目よりも小さくならないように、 必要があれば入れ替える。 次に、 左から3番目と4番目にある数の大きさを比較して、 4番目の方が3番目よりも小さくならないように、 必要があれば入れ替える。 必要があれば入れ替える。 このような操作を繰り返して最後までいったら、 ・ ・ ・ ・ というふうにしていくと、 最終的に左から小さい順に並び変えることができる。




挿入ソート
  数列の右から1番目にある数を、 その数よりも左側には大きい数が無い所まで移動させる。 もし、 移動させなくていい場合は、 次に、 その数の左隣にある数を、 その数よりも左側には大きい数が無い所まで移動させる。 ある数を移動させた場合には、 新たに移動させた跡にスライドしてきた数を、 その数よりも左側には大きい数が無い所まで移動させる。 このようにしていくと、 最終的に左から小さい順に並び変えることができる。




選択ソート
  数列の左から2番目以降にある数のうち最も小さい数字を見つけ出して、 それが左から1番目にある数字よりも小さければ、 その数を左から1番目に持ってくる。 そうでなければ、 何もしない。 次に、 左から3番目以降にある数のうち最も小さい数字を見つけ出して、 それが左から2番目にある数字よりも小さければ、 その数を左から2番目に持ってくる。 そうでなければ、 何もしない。 その次に、 ・ ・ ・ ・  というふうにしていくと、 最終的に左から小さい順に並び変えることができる。




クイックソート
  数列の真ん中にある数を1つピックアップして基準の数とする。 次に、 それよりも左側からその数よりも大きい数でかつ一番遠くにある数を見つけ、 また、 それよりも右側からその数よりも小さな数で一番遠くにある数を見つけ、 この2つを交換する。 次も同じ操作を繰り返し、 もうどちらかのサイドに該当する数がなくなったら、 左右交換を多くしないといけない方を短い数列にするように2群に分けて ( ただし、 基準の数の左右で左右交換をしなければならない数が等しい時は、 基準の数とその左右の3つに分ける ) 、 左側と右側においてそれぞれ同様の左右交換を行ない、 ・ ・ ・ ・ というふうに分岐再帰を繰り返していくと、 最終的に左から小さい順に並び変えることができる。 難易度の高いプログラムであるが、 現在の所、 このプログラムが最も短時間で実行できるとされている。