タグ付けされた質問 「sorting」

並べ替えアルゴリズムとその速度と複雑さについての質問。

4
Javaで区切られた文字列を分割する最も簡単な方法
区切られた文字列で複数列のソート機能を提供するコンパレータを構築しています。私は現在、生の文字列をトークンに分割するための好ましい選択肢として、Stringクラスのsplitメソッドを使用しています。 これは、生の文字列を文字列配列に変換するのに最適な方法ですか?何百万もの行を並べ替えるので、アプローチが重要だと思います。 それはうまく動作するようで非常に簡単ですが、Javaでより高速な方法があるかどうかは不明です。 これが私のコンパレータでのソートの仕組みです: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } return result; } さまざまなアプローチのベンチマークを行った後、信じられないかもしれませんが、splitメソッドは最新バージョンのJavaを使用するのが最も速かったです。ここに私の完成したコンパレータをダウンロードできます:https : //sourceforge.net/projects/multicolumnrowcomparator/

3
コンピュータにソーティングネットワークなどの専用ハードウェアが付属していないのはなぜですか?
私たちのやり方をプログラミングする代わりに、「ソート」などの一般的なタスクの仕様を作成して、環境にコンパイルして、ハードウェアを最大限に活用させてみませんか?このようにして、ソートネットワークなどの新しい専用ハードウェアを搭載したコンピューターを出荷でき、既存のコードで自動的に動作します。

3
クイックソートが「クイックソート」と呼ばれるのはなぜですか?
この質問の目的は、他の並べ替えアルゴリズムに対してこのメ​​リットを議論することではありません-これを行う他の多くの質問があります。この質問は名前についてです。クイックソートが「クイックソート」と呼ばれるのはなぜですか?確かに、それはほとんどの場合「迅速」ですが、常にというわけではありません。O(N ^ 2)に退化する可能性はよく知られています。この問題を軽減するさまざまな変更がクイックソートにありますが、最悪の場合を保証されたO(n log n)に下げるものは、一般にクイックソートと呼ばれなくなりました。(例:Introsort)。 よく知られているすべてのソートアルゴリズムのなかで、これが「クイック」という名前に値する唯一の理由であることに疑問を感じます。これは、アルゴリズムの動作方法ではなく、通常(通常)の速度を表します。Mergesortは、データをマージするため、それと呼ばれています。ヒープを使用するため、ヒープソートと呼ばれています。Introsortは、QuicksortからHeapsortに切り替えるタイミングを決定するために自身のパフォーマンスを監視するため、「Introspective」からその名前を得ています。同様に、すべての遅いもの(バブルソート、挿入ソート、選択ソートなど)についても同様です。私が考えることができる他の唯一の例外は「Bogosort」です。これは実際には誰も実際に実際に使用したことのない単なる冗談です。クイックソートが「パーティションソート」や「ピボットソート」など、より説明的なものと呼ばれないのはなぜですか。それが実際に何をしているのか?それは「最初にここに来た」の場合でさえありません。MergesortはQuicksortの15年前に開発されました。(ウィキペディアによると、それぞれ1945年と1960年) これは、プログラミングの問題というより、歴史の問題だと思います。私はそれがどのように名前を付けたのか興味があります-それはちょうど良いマーケティングでしたか?

6
クイックソートで気になりませんか?
特に「標準」(非HPC)アプリケーションを作成する場合、どのソートアルゴリズムを選択するか、またはクイックソート(ほとんどのライブラリが単にソートと呼ぶもの)で解決するかを検討しますか?特定の状況ではある程度利益を生む可能性がありますが、一方で適切な最適化には、問題を分析してベンチマークを作成するためにある程度の時間が必要です。

3
データの「ソート解除」/同質性アルゴリズム
車輪を再発明しないように、私は誰かがデータ同質性アルゴリズムについてアイデアを持っているかどうか尋ねています。簡単な例: 私のデータにはいくつかの要素があります 数 色 フルーツ 文字 配列にはこれらの要素が約100あります。アルゴリズムは、同じ番号の2つのエントリが互いにできるだけ間隔をあけて、色や果物などが同じになるように要素を並べ替える必要があります。要素に優先順位を付けることができれば、さらに良いでしょう。100%に到達することはないように思えるので、作成するパスの数を指定し、結果を確認してから、より多くのパスを試します。 私が見つけることができる十分なgoogle-fuを持っていないだけで機能する何かがここにあるとしても、私は驚かないでしょう。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.