我简单写了一个例子,可以参考下:
import java.util.Arrays;
public class IntegerArrayMoveExample {
public static void main(String[] args) {
// test
int[] arr={1,2,3,4,5,6,7,8,9,0};
arrayMove(arr,5);
}
/**
* 数组向右移动m位
* @param arr 原数组
* @param position 向右移动的位数,即m
*/
public static void arrayMove(int[] arr, int position) {
// output array
System.out.println("arr: "+Arrays.toString(arr));
// 移动的位数m大于数组长度,求余数
int len = arr.length;
if (position>len) {
position=position%len;
}
int[] newArr=new int[len];
// 先移动原数组后面的m位,放到新数组0~m-1位置
System.arraycopy(arr, len-position-1, newArr, 0, position);
// 再将原数组的0~len-m-1放到新数组的从m位置开始
System.arraycopy(arr, 0, newArr, position, len-position);
// output new array
System.out.println("newarr: "+Arrays.toString(newArr));
}
}
输出结果:
arr: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
newarr: [5, 6, 7, 8, 9, 1, 2, 3, 4, 5]
有不懂地方可以问我。
public class MinimalElements {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入n和m的值:");
int n=sc.nextInt(),m=sc.nextInt();
int a[]=new int[n];
for(int i=0;iSystem.out.println("请输入数组a的第"+(i+1)+"个元素:");
a[i]=sc.nextInt();
}
for(int i=0;iSystem.out.print("数组a的第"+(i+1)+"个元素为:"+a[i]+"\n");
}
int l=a.length-1;
int[] clone=a.clone();//需要克隆一个新的数组,因为之前的数组在第一次排序后各个元素的值都改变了
for(int i=l;i>=0;i--){
int p=i-m;
if(p>=0){int zan=a[p];a[p]=a[i];a[i]=zan;}
else{p=p+1; a[l+p]=clone[i];
}
}
System.out.println("往后移了"+m+"位的数组为");
for(int i=0;iSystem.out.print("数组a的第"+(i+1)+"个元素为:"+a[i]+"\n");
}
}
}
10个币没人做的
利用数组复制方法