这个是练习题:
两种方法:
一种我自己的
//定义一个方法将奇数放在数组的左侧,偶数放在数组的右侧
public static void method1(int[] arr) {
//获取数组中奇数和偶数的个数
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
count++;
}
}
//创建新数组存储原数组中的奇数
int[] arrJ = new int[count];
count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
arrJ[count] = arr[i];
count++;
}
}
//创建新数组存储原数组中的偶数
int[] arrO = new int[arr.length - count];
count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
arrO[count] = arr[i];
count++;
}
}
//奇数存左边,偶数存右边
for (int i = 0; i < arrJ.length; i++) {
arr[i] = arrJ[i];
}
for (int i = 0; i < arrO.length; i++) {
arr[i + arrJ.length] = arrO[i];
}
}
一种是老师的
public static void change(int[] arr) {
//创建一个新数组,长度与原数组相同
int[] newArr = new int[arr.length];
//定义两个变量,从数组的头开始,和从数组的尾开始
int index1 = 0;
int index2 = arr.length - 1;
//遍历传入的数组
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
//如果该元素是奇数,从数组左侧开始存
newArr[index1++] = arr[i];
}else {
//如果该元素是偶数,从新数组右侧开始存
newArr[index2--] = arr[i];
}
}
//将新数组中的元素复制到传入的数组中
for (int i = 0; i < newArr.length; i++) {
arr[i] = newArr[i];
}
}
两种方法元素的顺序会不太一样,但是都满足题目的要求 |
|