剑指offer:调整数组顺序使奇数位于偶数前面
一、题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
二、思路
设置一个变量start标志为调整好的最后一个奇数的后一个位置,遍历数组,当遍历到奇数时将其置换到start,然后start++。
public class 调整数组顺序使奇数位于偶数前面 { //将奇数抽到前面 public static void reOrderArray(int [] array) { int start = 0;//最后一个奇数的后一个位置 for(int i=0;i<array.length;i++){ if(array[i]%2==1){ moveArray(array, start, i); } } } //将y位置的元素移动到x,然后原本x~y-1的元素向后移动一位 public static void moveArray(int[] array,int x,int y){ int temp = array[y]; for(int i=y;i>x;i--){ array[i] = array[i-1]; } array[x] = temp; } public static void main(String[] args) { int[] nums = {1,2,3,4,5}; //reOrderArray(nums); moveArray(nums, 1, 2); for(int temp:nums){ System.out.print(temp+" "); } } }