zoukankan      html  css  js  c++  java
  • 剑指offer---13---(排序,快排思想)---调整数组顺序使奇数位于偶数的前面

     
     
    题意
    题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。相对位置不改变。
     
    分析
    思路1:
    因为偶数都要放到最后面去,所以出现一个偶数就放到最后,同时移动剩余的部分往前一位,这样能够保证相对位置不发生改变。O(n^2)
    思路2:
    先找到一个偶数,偶数要往后面放嘛,所以从偶数开始往后面找奇数,找到了就把奇数提前放在偶数的位置,因为找到的奇数是该偶数之后第一个奇数,所以奇数和偶数之间都是必须后移动一位的。
     
     
    代码:
    public class Solution {
        public void reOrderArray(int [] array) {
            if (array == null || array.length <= 1) return;
            
            int first = 0;
            int second = 0;
            //这边为什么使用while不用for,因为不是一步一步跳的,而是可以直接到末尾的。while用于不断后移动的操作。
            while (first < array.length) {
                while (first < array.length && isOdd(array[first])) {
                    first ++;
                }
                if (first >= array.length - 1) {
                    break;
                }
                second = first + 1;
                while (second < array.length && !isOdd(array[second])) {
                    second ++;
                }
                if (second > array.length - 1) {
                    break;
                }
                int temp = array[second];
                for (int i = second - 1; i >= first; i--) {
                    array[i + 1] = array[i];
                }
                array[first] = temp;
            }
        }
        
        public boolean isOdd(int num) {
            return (num & 1) == 1;
        }
    }
  • 相关阅读:
    swt 更新主UI线程
    java中 快捷键输入System.out.println();
    原型设计工具
    JAVA笔记
    转:java读取配置文件的几种方法
    Server Message Block
    安全标识符
    BitLocker:如何启用网络解锁
    imageX.exe
    组策略首选项
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9377016.html
Copyright © 2011-2022 走看看