给定一个arr包含按排序顺序排列的N位字的数组,是否有一种有效的算法可以将数组中所有元素的旋转结果左一位排序-与使用基数/美国标志排序相比,最好使用较小的常数因子。
sortRotated(arr : Array<Word32>)
for(I in indices arr)
arr[i] = rotateLeft(arr[i],1) // 0bXn..n => 0bn..nX
efficientSort(arr)
Run Code Online (Sandbox Code Playgroud)
这感觉就像它应该在线性时间是可能的,我们知道一些关于元素的排序,其中匹配的组0b0..0,0b0..1,0b1..0和0b1..1。