我有一些来自硬件的数据。数据以 32 字节的块形式出现,并且可能有数百万个块。数据块按以下方式分成两半(一个字母是一个块):
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
首先是具有偶数索引的所有块,然后是奇数块。是否有专门的算法来正确重新排序数据(按字母顺序)?
限制主要在空间上。我不想分配另一个缓冲区来重新排序:只是一个块。但我也想保持较低的移动次数:一个简单的快速排序将是 O(NlogN)。对于这种特殊的重新排序情况,在 O(N) 中是否有更快的解决方案?