package java程序员面试笔试宝典;
import java.util.Arrays;
public class 题8_5_6数组循环右移k位 {
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8};
reverse_1(a,2);
}
//时间换空间
public static void reverse_1(int[] a,int k){
k=k%a.length;
int s=a.length-k;
reverse(a, 0, s-1);
reverse(a, s, a.length-1);
reverse(a, 0, a.length-1);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
public static void reverse(int[] a,int begin,int end){
int b;
int e;
for (b=begin,e=end; b<e ;b++, e--) {
int temp=a[b];
a[b]=a[e];
a[e]=temp;
}
}
public static void reverse_0(int[] a,int k){
k=k%8;
for (int i = a.length-k; i < a.length; i++) {
System.out.print(a[i]+" ");
}
for (int i = 0; i < a.length-k; i++) {
System.out.print(a[i]+" ");
}
}
//这种不好
public static void reverse(int[] a,int k){
k=k%8;
a=Arrays.copyOf(a, a.length*2);
for (int i = 0; i < a.length/2; i++) {
a[(a.length/2)+i]=a[i];
}
for (int i = a.length/2-k; i < a.length/2-k+8; i++) {
System.out.print(a[i]+" ");
}
}
}