题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路分析
- 思路一:用个辅助数组,先将所有奇数加入,再将所有偶数加入。
- 思路二:相对位置不变 = 排序具有稳定性 => 插入、冒泡、归并,秉承越简单越好,用简单插入排序
代码实现
public void reOrderArray(int[] array) {
int count=0;
for (int i = 0; i < array.length; i++) {
if(array[i]%2==1){
int j=i;
while (j>count){
swap(array,j,j-1);
j--;
}
count++;
}
}
}
public void swap(int[] nums, int a, int b) {
int tmp = nums[b];
nums[b] = nums[a];
nums[a] = tmp;
}