首页 > 编程语言 > 详细

数组右移(C++)

时间:2016-02-23 00:47:15      阅读:280      评论:0      收藏:0      [点我收藏+]

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

 

数组右移(C++)

原文:http://www.cnblogs.com/lifeinsmile/p/5208564.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!