小さい順に並んだ数列A と 小さい順に並んだ数列B があります。
常に、 数列A と 数列B の第1項の大きさを比べることにします。
もし、 数列Aの第1項 が 数列B の第1項よりも大きければ、 数列B の第1項を削除して、 新しい数列の第1項とし、 もしそうでなければ、 数列A の第1項を削除して、 新しい数列の第1項とします。
次に、 数列Aの第1項 が 数列B の第1項よりも大きければ、 数列B の第1項を削除して、 新しい数列の第2項とし、 もしそうでなければ、 数列A の第1項を削除して、 新しい数列の第2項とします。
このようなことを繰り返していき、 どちらかの数列がなくなったら、 残った数列を新たにできた数列のお尻にくっつけます。
すると、 数列A と 数列B の全ての項を小さい順に並べた数列になります。
これはマージソートというアルゴリズムです。 十進BASIC にはサンプルとして Mer_SOAT.BAS が付いています。 この中にマージソートをする関数がありますが、 再帰関数になっており高度すぎてマージソートの仕組みを理解するのは困難です。 そこで、次のような低級なマージソートのプログラムを作ってみました。
十進