美文网首页
算法-21.调整数组顺序使奇数位于偶数前面

算法-21.调整数组顺序使奇数位于偶数前面

作者: zzq_nene | 来源:发表于2020-08-18 10:11 被阅读0次

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

方式一:

采用for循环的方式遍历,先把奇数的元素加入数组中,然后再加入偶数元素。

    public static int[] exchange(int[] nums) {
        if (nums == null || nums.length == 0) {
            return null;
        }
        int[] newNums = new int[nums.length];
        int count = 0;
        for (int i=0;i< nums.length;i++) {
            if (nums[i]%2 == 1) {
                newNums[count] = nums[i];
                count++;
            }
        }
        for (int i=0;i< nums.length;i++) {
            if (nums[i]%2 == 0) {
                newNums[count] = nums[i];
                count++;
            }
        }
        return newNums;
    }

方式二:

使用冒泡的思想,每当是奇数就移动到最前面

    public static int[] exchange1(int[] nums) {
        int count = nums.length;
        // 遍历n次
        for (int i=count-1;i>0;i--){
            // 从前往后遍历
            for (int j=0;j<i;j++) {
                // 当前位置是偶数,但是下一个位置元素是奇数,则交换两个元素位置
                if (isEven(nums[j]) && !isEven(nums[j+1])) {
                    swap(nums, j, j + 1);
                }
            }
        }
        return nums;
    }

    private static boolean isEven(int x) {
        return x % 2 == 0;
    }

    private static void swap(int[] nums, int i, int j) {
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }

相关文章

网友评论

      本文标题:算法-21.调整数组顺序使奇数位于偶数前面

      本文链接:https://www.haomeiwen.com/subject/dnbddktx.html