调整数组顺序使奇数位于偶数前面

2年前 (2022) 程序员胖胖胖虎阿
188 0 0

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

解法一

第一次循环遍历数组,找到第一个奇数
遍历奇数之前的数组,找到第一个偶数,并交换奇数和偶数

public class Solution {
    public void reOrderArray(int [] array) {
        int temp = 0;
        for(int i = 0; i < array.length; i++) {
            if((array[i] & 1) == 1) {
                for(int j = 0; j < i; j++) {
                    if((array[j] & 1) == 0) {
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }
    }
}

解法二

以空间换时间的思路,定义一个和原数组大小相同的新数组,并且遍历原数组,同时从两端进行判断,左边负责判断奇数,遇到就放入新数组(正向放入);右边负责判断偶数,遇到就放入新数组(后从向前放),一遍循环结束,新数组就是我们想要的结果

public class Solution {
    public void reOrderArray(int [] array) {
        int[] temp = new int[array.length];
        int low = 0;
        int high = array.length - 1;
        for(int i = 0; i < array.length; i++) {
            if((array[i] & 1) == 1) {
                temp[low] = array[i];
                low++;
            }
            if((array[array.length - i - 1] & 1) == 0) {
                temp[high] = array[array.length - i - 1];
                high--;
            }
        }
        for(int i = 0; i < temp.length; i++) {
            array[i] = temp[i];
        }
    }
}

版权声明:程序员胖胖胖虎阿 发表于 2022年11月6日 下午11:08。
转载请注明:调整数组顺序使奇数位于偶数前面 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...