回 帖 发 新 帖 刷新版面

主题:请教一个有关数组移位的算法

一个数组,比如是 a b c d e f g现在向左移动两位,变为f g a b c d e 怎么只使用一个额外空间,在O(n)时间里完成?

回复列表 (共3个回复)

沙发

等我两天!谢谢!

板凳

#include<iostream.h>
#include<iomanip.h>
const n=10;
int a[n];

void main(){
    for(int i=0;i<n;i++)
        a[i]=i;
    int t;
    for(i=n-1;i>1;i--){
        int j=(i+2)%n;
        t=a[j];
        a[j]=a[i];
        a[i]=t;
        for(int k=0;k<n;k++)
            cout<<setw(2)<<a[k];
        cout<<endl;
    }
}

3 楼

mark

我来回复

您尚未登录,请登录后再回复。点此登录或注册