原地shift算法

来源:互联网 发布:经纬度 数据库类型 编辑:程序博客网 时间:2024/05/16 19:44
#include<iostream>using namespace std;void swap(int &a, int &b){    int temp = a;    a = b;    b = temp;}//3 次操作int reverse(int *A, int lo, int hi){    if(lo < hi)    {        swap(A[lo], A[hi]);        reverse(A, lo+1, hi-1);    }}//3(hi - lo)/2次操作int shift(int*A, int n, int k){    k %= n;    reverse(A, 0, k-1);//3k/2    reverse(A, k, n-1);//3(n - k)/2    reverse(A, 0 ,n-1);//3n/2    return 3*n;}//3n 次操作int main(){    int A[] = {1, 2, 3, 4, 5, 6};    shift(A, 6, 2);    for (auto &i : A)        cout << i << ' ' ;    return 0;}
原创粉丝点击