数组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; }