题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
分析:
1.定义两个链表,用链表分别存储奇数和偶数。
2.i从左向右遍历,将奇数存放给list1,将偶数寄存给list2,存放用add方法。
3.合并这两个链表,用addAll实现,即list1.addAll(list2)。
4.遍历赋值给原数组。
实现代码:
import java.util.ArrayList;
import java.util.List;
public class 调整数组顺序 {
public static void reOrderArray(int[] array) {
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 == 1) {
list1.add(array[i]);
} else {
list2.add(array[i]);
}
}
list1.addAll(l2);
for (int i = 0; i < array.length; i++) {
array[i] = list1.get(i);
}
}
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 15 };
reOrderArray(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
参考输出: