將陣列迴圈右移k位
阿新 • • 發佈:2019-01-31
將陣列移位就相當於將兩部分序列交換位置,於是將陣列移位轉換為三次反轉操作,如123456右移2位結果為561234,過程:分別將1234和56反轉為4321和65,之後對反轉結果432165做一次反轉結果為561234,java程式碼如下:
//將數字陣列迴圈右移k位
public class shuzuxiwei
{
public static void yiwei(int k,int[] a)
{
int len=a.length;
k=k%len;
jiaohuan(0,len-k-1,a);
jiaohuan(len-k,len-1 ,a);
jiaohuan(0,len-1,a);
}
private static void jiaohuan(int i, int j, int[] a)
{
// TODO Auto-generated method stub
while(i<j)
{
int t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
}
}
public static void main(String[] args)
{
int[] a={1,2,3,4,5,6,7};
yiwei(12,a);
for(int i=0;i<7;i++)
System.out.println(a[i]);
}
}