ソート(並べ替え) |
単純ソート データ数が少なければ、単純なソートで十分でしょう。
私の環境(MMX Pentium 200MHz)で、1,000個のデータを1秒、1万個のデータを2分11秒でソートします。 このソートアルゴリズムは、上から順に、そこから下の最小値を探して入れ替えているもので、選択ソートと呼ばれる場合が多いようです。 単純なソートで最も有名なのはバブルソートと呼ばれるものですが、バブルソートの無駄かもしれない比較や交換を省いたものが選択ソートで(選択ソートのことをバブルソートと呼んでいる例もあるようです)、ここで使っているものは、さらに無駄かもしれない交換を省いています。 |
クイックソート データ数が多くなると、単純ソートでは時間がかかりすぎるかもしれません。 無条件・オンメモリではクイックソート(バイナリソート)と呼ばれるアルゴリズムが最速と言われています。 このアルゴリズムは、適当に選んだ値で全体を2つの部分に分け、上の方にはその値以下のもの、下の方にはその値以上のものを置き、それぞれの部分について、再び同じことを繰り返す──というのを部分が1要素になるまで繰り返すものです。 ただ、件数が多くなると、アルゴリズムは同じでも、コードによってけっこう大きな速度差が出てきます。私の知っている限りでは、10年以上前の月刊アスキーに掲載されたBASICプログラムが最速で、それをHSPに移植・改造したリストがありますが、公表していいものかどうか、よくわかりません。 それよりは多少遅いのですが、クイックソートのサンプルを作りました。
|