数组右移(C++)

数组A,右移k位,要求在线性时间内完成。

#include <iostream>

using namespace std;

template <typename T>
void reverseArray(T* a, int start, int endArray)
{
    int ed = endArray;
    for(int i = start; i <= (start+endArray)/2; i++){
        swap(a[i], a[ed]);
        ed --;
    }
}

template <typename T>
void arrayRShift(T* a, int k, int n)
{
    k = k%n;
    cout << k << endl;
    reverseArray(a, 0, n-k-1);
    reverseArray(a, k-1, n-1);
    reverseArray(a, 0, n-1);
}


int main()
{
    int a[5]={1,2,6,4,5};
    arrayRShift(a, 3, 5);
    for(int i = 0; i< 5; i++){
        cout << a[i] <<endl;
    }

    return 0;
}

 

posted on 2016-02-22 23:51  qmzp  阅读(1222)  评论(0编辑  收藏  举报

导航