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

 

相关文章:

  • 2021-07-03
  • 2021-08-25
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
猜你喜欢
  • 2021-08-06
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
相关资源
相似解决方案