c语言基础问题,求大神解答

输入10个整数,使其各数顺序向后移动m个位置,如1、2、3、4、5、6、7、8、9、10移动后为7、8、9、10、1、2、3、4、5、6

用循环,对1……8的数据向后移,0,9号数据单独考虑

百度上有个算法,你试试效率怎么样


 void Reverse(int *arr, int b, int e)
{
    for(; b < e; b++, e--)
    {
        int temp = arr[e];
        arr[e] = arr[b];
        arr[b] = temp;
    }
}

void RightShift(int *arr, int n, int m)
{
    m %= n;
    Reverse(arr, 0, n-m-1);
    Reverse(arr, n-m, m-1);
    Reverse(arr, 0, n-1);
}

main函数
    int z[8] = {1,2,3,4,5,6,7,8};
    RightShift(z, 8, 3);

好几个人在问这个问题,http://ask.csdn.net/questions/220795

就是数组的位置互换。面试经常会被问到