描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解析
简单插入排序就行。
优化点:当往后一轮,没有数据交换,说明奇数都在前面了。退出循环即可。
代码
public class Solution { public void reOrderArray(int [] array) { if (null == array || array.length <= 0) { return; } for (int i = 0; i < array.length; i++) { boolean flag = true;//标识一个轮次有没有发送数据交换,没有就退出循环 if ((array[i] & 1) == 0) { flag = false; for (int j = i + 1; j < array.length; j++) { if ((array[j] & 1) == 1) { int temp = array[j]; for (int k = j - 1; k >= i; k--) { array[k + 1] = array[k]; } array[i] = temp; flag = true; break; } } } if (!flag) { break; } } } }