1.题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
2.分析:
将奇数放在数组的前半部分,偶数放在数组的后半部分——即所有的奇数应该位于偶数的前面,即在此数组的中,若发现有奇数在偶数的前面,就交换它们的次序。
3.代码实现:
public class Test {
//1.奇数在数组后面
public boolean isOdd(int n){
return (n & 1 ) == 1;
}
public void moveArr(int[] arr){
if(arr == null)
return;
int left = 0;
int right = arr.length - 1;
while(left < right){
if(isOdd(arr[left]) && !isOdd(arr[right])){
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
else if(!isOdd(arr[left]) && isOdd(arr[right])){
left ++;
}
else if(isOdd(arr[left]) && isOdd(arr[right])){
right --;
}
else{
left ++;
right --;
}
}
}
public static void main(String[] args) {
Test test = new Test();
int[] arr = {1,2,3,4,5,6,7,8,9,10};
test.moveArr(arr);
for (int i = 0; i < arr.length ; i++) {
System.out.print(arr[i] + " ");
}
}
}
4.运行截图:
?
?
?