数组的扩容(缩容)操作
一、拷贝
-
for循环
int [ ] brr=new int[arr.length];
for(int i=0;i<arr.length;i++){
brr[i]=arr[i];
} -
int [] brr=Arrays.copyOf(arr,arr.length);
-
int [] brr=new int [arr.length];
System.arraycopy(arr,0,brr,0,arr.length); -
int [] brr=arr.clone();
二、扩容
arr=Arrays.copyOf(arr,arr.lengh+1);
三、练习
给定一个数组:int[] arr = {1,2,3,4,5,6,7,8,9,10};
要求:arr中的数字奇数放在数组前面,偶数放在数组后面。{奇数部分,偶数部分}。数字顺序不要求。
方法一:
public class TestDemo2 {
public static int[] sort(int[] arr) {
int[] brr = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
brr[i / 2] = arr[i];
}
else {
brr[i/2+5]=arr[i];
// for(int j=5;j<arr.length;j++){
// if(brr[j]==0){
// brr[j] = arr[i];
// }
// else{
// continue;
// }
// break;
// }
}
}
return brr;
}
public static void main(String[] args) {
int [] arr={1,2,3,4,5,6,7,8,9,10};
int[]brr=sort(arr);
System.out.println(Arrays.toString(brr));
}
方法二:
public static void change(int[] arr){
int i = 0;
int j = arr.length-1;
while (i <j){
//从前向后查找,直到找到偶数停止
while (arr[i] % 2 != 0&&i<j){
i++;
}
//i 标记偶数为止
//从后向前查找,直到找到奇数停止
while (arr[j] % 2 == 0&&i<j){
j--;
}
// j 标记的是奇数位置
swap(arr,i,j);
// int temp = arr[i];
// arr[i] = arr[j];
// arr[j] = temp;
}
}
public static void swap(int[] arr,int index1,int index2){
int temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
change(arr);
System.out.println(Arrays.toString(arr));
// arr: 奇数 偶数
}