输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解析:①新开一个数组;
②先找第一个偶数,之后找到紧接着的奇数;把奇数拿出;前边的偶数依次后移,将奇数插入;循环
代码:
①
public class Solution {
public void reOrderArray(int [] array) {
int count = 0;
for(int i = 0; i < array.length; i++){
if(array[i] % 2 != 0){
count++;
}
}
int[] newArray = new int[array.length];
int e =0;
for(int i = 0; i < array.length; i++){
if(array[i] % 2 == 1){
newArray[e++] = array[i];
}else{
newArray[count++] = array[i];
}
}
for(int i = 0; i < array.length; i++){
array[i] = newArray[i];
}
}
}
***************************************************************************************************************
②
public class Solution {
public void reOrderArray(int [] array) {
int i = 0;
int j;
while(i < array.length){
while(i < array.length && array[i] % 2 != 0){
i++;
}
j = i + 1;
while(j < array.length && array[j] % 2 == 0){
j++;
}
if(j < array.length){
int temp = array[j];
for(int j2 = j - 1; j2 >= i; j2--){
array[j2+1] = array[j2];
}
array[i++] = temp;
}else{
break;
}
}
}
}