ハードウェアからのデータがあります。データは 32 バイトのブロックで提供され、数百万のブロックが存在する可能性があります。データ ブロックは、次のように 2 つの半分に分散されます (文字は 1 つのブロックです)。
A C E G I K M O B D F H J L N P
または番号が付けられている場合
0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15
最初に偶数インデックスのすべてのブロック、次に奇数ブロック。データを正しく並べ替える (アルファベット順) 特殊なアルゴリズムはありますか?
制約は主にスペースに関するものです。並べ替えるために別のバッファーを割り当てたくありません。あと 1 ブロックだけです。しかし、私は移動数を低く抑えたいとも考えています。簡単なクイックソートは O(NlogN) です。この特別な並べ替えの場合、O(N) でより高速なソリューションはありますか?