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

24
最長の固定長6整数配列
Stack Overflowの別の質問(この質問)に答えると、興味深い副問題に遭遇しました。6つの整数の配列をソートする最も速い方法は何ですか? 質問は非常に低いレベルなので: ライブラリが利用可能である(および呼び出し自体にコストがかかる)とは想定できません。プレーンなCのみです。 (コストが非常に高い)命令パイプラインが空になるのを避けるために、分岐、ジャンプ、およびその他すべての種類の制御フローの中断(&&またはのシーケンスポイントの背後にあるものなど)を最小限に抑える必要があり||ます。 部屋には制約があり、レジスタとメモリの使用を最小限に抑えることが問題です。理想的には、並べ替えが最善です。 本当にこの質問は、ソースの長さを最小化することではなく、実行時間を目標とする一種のゴルフです。マイケル・アブラッシュとその続編による『Zen of Code optimization』という本のタイトルで使用されているように、私はそれを「Zening」コードと呼んでいます。 なぜそれが興味深いのかについては、いくつかの層があります: この例はシンプルで理解しやすく、測定も簡単で、Cのスキルはそれほど必要ありません これは、問題に対して適切なアルゴリズムを選択した場合の効果だけでなく、コンパイラーと基礎となるハードウェアの効果も示しています。 これが私のリファレンス(素朴で最適化されていない)の実装とテストセットです。 #include <stdio.h> static __inline__ int sort6(int * d){ char j, i, imin; int tmp; for (j = 0 ; j < 5 ; j++){ imin = j; for (i = j + 1; i < 6 …

10
10個の数値を並べ替える最速の方法は?(数値は32ビットです)
私は問題を解決しており、10個の数値(int32)を非常に迅速にソートする必要があります。私のアプリケーションでは、10の数値を可能な限り数百万回並べ替える必要があります。私は数十億の要素のデータセットをサンプリングしていて、その中から10個の数値を選択(簡略化)してソートする必要があるたびに(ソートされた10個のエレメントリストから結論を出します)。 現在、挿入ソートを使用していますが、挿入ソートに勝る10個の数値という特定の問題に対して、非常に高速なカスタムソートアルゴリズムを実装できると思います。 この問題にどのように取り組むかについて誰かが何か考えを持っていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.