zoukankan      html  css  js  c++  java
  • 调整数组顺序使奇数位于偶数前面


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


    解法一

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

    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];
            }
        }
    }
    

  • 相关阅读:
    2019-2020-1 20175214 《信息安全系统设计基础》第1周学习总结
    数据结构部分结构截图
    优化算法小结
    排序算法总结
    计算机网络复习总结(三)
    计算机网络复习总结(二)
    计算机网络复习总结(一)
    Spring mvc4 + ActiveMQ 整合
    JAVA中定时任务
    类上带泛型
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13735570.html
Copyright © 2011-2022 走看看