问题描述;将一个数组中的元素前移p个单位长度
思路:定义一个新数组crr,用来接收数组前p个元素
然后再利用for循环将后n- p个元素前移动p个单位
最后将crr中的数据依次填入到arr后p位中
时间复杂度O(n)
import java.util.Arrays;
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
int []arr= {1,2,3,4,5,6,7};
System.out.println(Arrays.toString(arr));
Scanner sc = new Scanner(System.in);
int p = sc.nextInt();
search(arr,p);
}
public static void search(int[] arr,int p) {
int[] crr=new int[arr.length];//开辟新数组
for(int i=0;i<p;i++) {//将前p个元素存储
crr[i]=arr[i];
}
for(int i=p;i<arr.length;i++) {//元素前移
arr[i-p]=arr[i];
}
int sum=0;
for(int i=arr.length-p;i<arr.length;i++) {//将先前存入的前p个填入
arr[i]=crr[sum++];
}
System.out.println(Arrays.toString(arr));
}
}