剑指offer—调整数组顺序使奇数位于偶数前面

来源:互联网 发布:九阴绝学金身升级数据 编辑:程序博客网 时间:2024/05/29 07:29

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

public class Solution {    public void reOrderArray(int [] array) {        if(array==null || array.length<=0) return;        int flag = 0;        int i,j;        for(i=1; i<array.length;i++){            if((array[i]&1)==1 && (array[i-1]&1)==0){                flag = array[i];                for(j=i-1; j>=0 && (array[j]&1)==0; j--){                    array[j+1] = array[j];                }                array[j+1] = flag;            }        }    }}

这里的代码是满足牛客网上题目要求的,奇数排在数组的前半部分,偶数排在数组的后半部分,并且相对位置不变。这里使用插入排序法解决

        int i=0;        int j=array.length-1;        while(i<j){            while(i<j&&array[I]&2==1){                i++;            }            while(i<j&&array[j]&2==0){                j--;            }            int temp=array[j];            array[j]=array[i];            array[i]=temp;        }

这一部分代码是满足原书要求的代码,数组前半部分是奇数,后半部分是偶数类似于快排

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