法1:不创建新数组,直接在原数组中进行置换。
思路:1.创建left=0指向数组的最左侧索引,创建right=数组长度-1,指向最右侧索引。
2.采用嵌套的循环进行判断,外层循环判断是否将数组中元素全部进行判断。内层进行移动操作。
3.left从最左侧进行判断,若遇到偶数,则将用left记录其索引。
right从最右侧进行判断,若遇到奇数,则用right记录其索引。
public static void main(String[] args) {
int[] sum = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int left = 0;
int right = sum.length - 1;
while (left < right) {
while (left < right && sum[left] % 2 != 0) {//若元素为奇数,则跳过,不进行记录
left++;
}
while (left < right && sum[right] % 2 == 0) {//若元素为偶数,则跳过,不进行记录
right--;
}
int temp=sum[left];
sum[left]=sum[right];
sum[right]=temp;
}
for (int i = 0; i < sum.length; i++) {
System.out.print(sum[i]+" ");
}
}
法2:创建新的数组
思路:1.对数组中每一个元素进行判断,若为奇数,则放在左侧,偶数则放在右侧。
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int[] newnum = new int[num.length];
for (int i = 0, j = 0,k=num.length-1; i < num.length; i++) {
if (num[i] % 2 != 0) {
newnum[j] = num[i];
j++;
} else {
newnum[k]=num[i];
k--;
}
}
for (int i = 0; i < newnum.length; i++) {
System.out.print(newnum[i]+" ");
}
}