我有一个要解决的算法问题,它看起来像这样:
我们有长度为n的序列,其元素范围从0到(k-1)。
n = 10,k = 3的实例:
2 1 0 0 2 1 0 0 1 2
我必须对此字符串进行排序,因此它看起来像这样: 0 1 2 0 1 2 0 1 2 0 2 (从0到k-1排序的子集,可能无法对剩余元素进行排序)。
但是必须通过将k个相邻元素移动到末尾并加入其余元素来进行排序,例如:
0 1 2 [2 0 2] 0 1
0 1 2 0 1 [2 0 2]
在解决方案中,我可以假设,会有一定数量的冗余元素。
我已经发明了天真的算法来解决这个问题: http://pastebin.com/Q5CR99E7
...但我必须提出3种算法,我认为可能有更复杂的解决方案。 我很感激你的想法。