バッチファイル ですか??
バッチファイルは、プログラミング言語、というよりも既存のツール or コマンドの 起動スクリプト 的な性格のものなので、バッチファイルそのものの機能だけでソートのような処理をすることはお勧めできません!
そこで、いくつか確認させてください。
- バッチファイルを使う(バッチファイルの活用Tipsを身に着ける)こと自体が目的ですか?
- 実用性を重要視しますか? それとも学習目的ですか?
- ターゲットのWindowsのバージョンは?
ソート用コマンドを使用することはできません。(言語はbatch)
の真意をお尋ねしたいです。
あくまでも「バッチファイルでの処理」に拘らねばならない理由がお有りなら、それはそれで理解できますが、処理環境がWindowsだからという理由だけで「バッチファイルでの処理」しかできないということにはなりません。
お使いのWindowsのバージョンによっては、デフォルトの機能だけで(追加インストールなしに)バッチファイルに変わるより良いアプローチの方法があります。
解決済みになっていないので、追記します。
まず、問題を2つに分ける必要があります。
0. どのソートアルゴリズムが適しているか
0. 具体的に(バッチファイルで)どのように実装するか
《ソートアルゴリズムの選択について》
もっとも比較回数が少ない方法
ということですが、これは純粋に、目的の条件にはどのソートアルゴリズムが適しているかという問題です。
ソートアルゴリズムについては非常に古くから様々な研究がなされており、それを多くの方が解説されているので、そちらを確認されることをお勧めします。
というのは、ソート時の比較回数は、単に要素数だけでなく開始時点の並び順にも大きく左右されることがわかっているからです。
つまり、ご提示頂いた情報だけでは「最適解」を決めることはできません。
分かりやすい解説記事の幾つかをご紹介します。
ソート速度比較
ソートの種類
たとえば、一般的に「高速」なアルゴリズムとしてしられているクイックソートですが、「安定でない」とあるように、開始時点のデータの並び順によって性能が大幅に変化します。
また、再帰的な処理の苦手な「バッチファイルで」という制約の元では、単純に「論理的な比較回数」の少ないアルゴリズムが本当に優れているとは言い切れません。
同じ言語を使用していても実装方法で速度に差がでる訳ですから、幾つかのアルゴリズムに絞り込んだら、実際の使用条件の元でベンチマークテストを実施することが、「速さを追求」する上では欠かせないと思います。
《バッチファイルでの実装例》
バッチファイルでの実装に自分でチャレンジしてみようとも思いましたが、既に優れた実装例(ベンチマーク付き)がWebに公開されていますので、今回はそれをご紹介するに留めます。
挿入ソートとクイックソートの実装例
以上、ご参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/27 16:32