标签:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
//这是一个错误的解决方式,使用快速排序
public static void reOrderArrayError(int[] array) {
if (array == null || array.length == 0 || array.length == 1) {
return;
}
int temp = array[0];
int i = 0, j = array.length - 1;
while (i < j) {
while (i < j && array[i] % 2 == 1) {
i++;
}
if (i < j) {
array[j] = array[i];
}
while (i < j && array[j] % 2 == 0) {
j--;
}
if (i < j) {
array[i] = array[j];
}
}
array[i] = temp;
}
//插入排序
public static void reOrderArray(int[] array) {
if (array == null || array.length == 0 || array.length == 1) {
return;
}
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 == 1) {
int j = i - 1;
int temp = array[i];
while (j >= 0 && array[j] % 2 == 0) {
array[j + 1] = array[j];
j--;
}
array[j+1] = temp;
}
}
public void testReOrderArray() {
int[] array = { 1, 2, 3, 4, 5, 6, 7 };
int[] curArray = { 1, 3, 5, 7, 2, 4, 6 };
Number.reOrderArray(array);
for (int i = 0; i < array.length; i++) {
assertEquals(array[i], curArray[i]);
// Log.d("TAG", array[i]+" ");
}
}
标签:
原文地址:http://blog.csdn.net/zivensonice/article/details/51368098