输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

来源:互联网 发布:python openwrt 模拟 编辑:程序博客网 时间:2024/05/18 06:28

《剑指offer》题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

解题思路:从数组的第一个元素开始判断是否为奇数,如果是奇数则将其移动到数组前面(如果数组第一个元素为奇数则不移动,跳出循环继续下一次判断),然后奇数前面的元素依次向后移动。设置变量m记录奇数将要移动的位置。

代码如下:

public class Solution {   public void reOrderArray(int [] array) {        int m = 0;//标记奇数的个数        for(int i=0;i<array.length;i++){            if(array[i]%2==1){//找到的奇数                m++;                if(i==0)                    continue;                int tmp = array[i];//记录奇数                int ti = i;                for(;ti>=m;ti--){                    array[ti] = array[ti-1];//奇数之前的所有元素往后移动一位                }                array[m-1] = tmp;            }        }    }}

阅读全文
1 0
原创粉丝点击