调整数组顺序使奇数位于偶数前
解题思路
看到题目首先想到的是将排序的思想应用到这道题目上,但是这样不能保证奇数在偶数前面,并且相对位置不变;其次又想是不是可以都顺次遍历然后交换,可后来发现这样进行的次数多了会打乱偶数的相对位置;所以最后只好用最笨的方法,从前往后分别找到第一个偶数和第一个奇数,然后一个一个的挪动位置进行交换,这样可以满足题意,但是要注意遍历偶数的边界和while循环结束的条件
问题描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
代码实现
import java.util.Queue; public class Solution { public void reOrderArray(int [] array) { int start = 0; int end = 0; if(array.length==0){ return ; } while(start<array.length){ while(start<array.length&&(array[start]%2!=0)){ start++; } end=start+1; while(end<array.length&&(array[end]%2==0)){ end++; } if(end<array.length){ int temp = array[end]; for(int j=end; j>start; j--){ array[j]=array[j-1]; } array[start]=temp; } else{ break; } } } }