《剑指offer》牛客网java题解-调整数组顺序使奇数位于偶数前面

来源:互联网 发布:阿尔法营销软件 编辑:程序博客网 时间:2024/06/08 07:25

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

题目中要求了相对位置不变,如果没有这个要求的话,可以才有双指针,从头和尾分别扫描然后交换。

第一种解法是开辟了新的数组,等于用空间换时间。

import java.util.ArrayList;import java.util.List;public class Solution {    public void reOrderArray(int [] array) {        List<Integer> cur1 = new ArrayList<Integer>();        List<Integer> cur2 = new ArrayList<Integer>();        for(int tmp:array){            if ((tmp&1)==0){                cur1.add(tmp);            }            else cur2.add(tmp);        }        int i =0;        while (i < array.length) {            for (int tmp:cur2){                array[i]=tmp;                i++;            }            for (int tmp:cur1){                array[i]=tmp;                i++;            }        }    }}

可以采用冒泡的方式

public class Solution {    public void reOrderArray(int [] array) {        for(int i=0;i<array.length-1;i++)            for(int j=0;j<array.length-i-1;j++){                if(array[j]%2==0 && array[j+1]%2==1){                    int temp=array[j];                    array[j]=array[j+1];                    array[j+1]=temp;                }            }    }}
阅读全文
0 0