題目:輸入一個整數(shù)數(shù)組多律,實(shí)現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序,使得所有奇數(shù)位于數(shù)組的前半部分搂蜓,所有偶數(shù)位于數(shù)組的后半部分狼荞。
代碼如下:
package demo;
public class Test13 {
public static void recordOddEven(int[] arr) {
if(arr == null || arr.length < 2) {
return;
}
// 從左到右記錄偶數(shù)的位置
int start = 0;
// 從右到左記錄奇數(shù)的位置
int end = arr.length - 1;
while(start < end) {
// 找偶數(shù)
while(start < end && (arr[start] % 2 != 0)) {
start++;
}
// 找奇數(shù)
while(start < end && arr[end] % 2 == 0) {
end--;
}
/*
* 找到后就將奇數(shù)和偶數(shù)交換位置
* (對于start==end的情況,交換不會有影響帮碰。)
*/
int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
}
/**
* 打印數(shù)組元素
* @param arr
*/
public static void printArray(int[] arr) {
if(arr == null || arr.length <= 0) {
return;
}
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
public static void main(String[] args) {
System.out.println("數(shù)組中偶數(shù)相味、奇數(shù)交替出現(xiàn)");
int[] arr1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
recordOddEven(arr1);
printArray(arr1);
System.out.println("數(shù)組中所有偶數(shù)都在奇數(shù)前面:");
int[] arr2 = {0, 2, 4, 6, 1, 3, 5, 7};
recordOddEven(arr2);
printArray(arr2);
System.out.println("數(shù)組中所有奇數(shù)都在偶數(shù)前面:");
int[] arr3 = {1, 3, 5, 7, 0, 2, 4, 6};
recordOddEven(arr3);
printArray(arr3);
System.out.println("數(shù)組為NULL:");
int[] arr4 = null;
recordOddEven(arr4);
printArray(arr4);
System.out.println("數(shù)組中只有1個數(shù)字:");
int[] arr5 = {1};
recordOddEven(arr5);
printArray(arr5);
}
}
運(yùn)行結(jié)果