Fastest algorithm for circle shift N sized array for M position

后端 未结 24 3004
温柔的废话
温柔的废话 2020-11-28 05:33

What is the fastest algorithm for circle shifting array for M positions?
For example, [3 4 5 2 3 1 4] shift M = 2 positions should be [1 4 3 4 5 2 3

24条回答
  •  再見小時候
    2020-11-28 05:41

    In theory, the fastest one is a loop like this:

    if (begin != middle && middle != end)
    {
        for (i = middle; ; )
        {
            swap(arr[begin++], arr[i++]);
            if (begin == middle && i == end) { break; }
            if (begin == middle) { middle = i; }
            else if (i == end) { i = middle; }
        }
    }
    

    In practice, you should profile it and see.

提交回复
热议问题