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

    • 题目

      输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)

    • 思路

      采用两个指针low、high,分别指向数组的头部跟尾部。low指针向后滑动,high指针向前滑动,low指针用来找偶数,high指针用来找基数,然后将两者交换,这类似于快速排序

    • 代码实现
    public class Algorithm {
        
        /**判断数字num是否为奇数*/
        public static boolean isEven(int num){
            /**位运算要比%要快*/
            if((num & 1) == 1)
                return true;
            return false;
        }
        
        public static void ReorderOddEven(int [] source) {
            int low = 0;
            int high = source.length - 1;
            while(low <= high) {
                /**找偶数*/
                while(isEven(source[low])) {
                    ++low;
                }
                /**找奇数*/
                while(!isEven(source[high])) {
                    --high;
                }
                if(low <= high) {
                    /**交换*/
                    int tmp = source[low];
                    source[low] = source[high];
                    source[high] = tmp;
                }
            }
        }
        
        public static void main(String []args) {
            int [] array = new int[]{2,4,5,6,3,8,1};
            Algorithm.ReorderOddEven(array);
            for(int num : array) {
                System.out.println(num);
            }
        }
    }

      

  • 相关阅读:
    Jenkins构建项目
    jenkins的理解及安装
    GitLab初识以及代码迁移
    深入浅出Git(偏向理论)
    理解下所谓的ssh隧道
    洛谷-P1908 逆序对
    洛谷-P1010 幂次方
    洛谷-P1226 【模板】快速幂||取余运算
    洛谷-P1074 靶形数独
    洛谷-P1433 吃奶酪
  • 原文地址:https://www.cnblogs.com/hanfight/p/4069383.html
Copyright © 2011-2022 走看看