• 九度 1516 调整数组顺序使奇数位于偶数前面


    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.StreamTokenizer;
    
    public class Main{
    
        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
            //System.setIn(new FileInputStream("data.in"));
            StreamTokenizer in = new StreamTokenizer(new BufferedReader(
                    new InputStreamReader(System.in)));
            while (in.nextToken() != StreamTokenizer.TT_EOF) {
                int n = (int) in.nval;
                int evenIndex = 0, oddIndex = 0;
                int[] evenArr = new int[n];
                int[] oddArr = new int[n];
                for (int i = 0; i < n; i++) {
                    in.nextToken();
                    int m = (int) in.nval;
                    if ((m & 1) == 0) {
                        evenArr[evenIndex++] = m;
                    } else {
                        oddArr[oddIndex++] = m;
                    }
                }
                for (int i = 0; i < oddIndex; i++) {
                    if (i > 0) {
                        System.out.print(" ");
                    }
                    System.out.print(oddArr[i]);
                }
                if (oddIndex > 0) {
                    System.out.print(" ");
                }
                for (int i = 0; i < evenIndex; i++) {
                    if (i > 0) {
                        System.out.print(" ");
                    }
                    System.out.print(evenArr[i]);
                }
                System.out.println();
    
            }
        }
    }

    扩展:当不需要关注奇偶数原来的顺序时

    package com.wangzhu.algorithm;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class ArrayOddEvenMove {
    
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            while(cin.hasNext()){
                int n = cin.nextInt();
                int[] arr = new int[n];
                while(cin.hasNext()){
                    for(int i = 0;i < n;i ++){
                        arr[i] = cin.nextInt();
                    }
                    execute1(arr);
                    System.out.println(Arrays.toString(arr));
                }
            }
        }
        
        public static void execute1(int[] arr){
            //记录奇数的当前位置
            int start = -1;
            for(int i = 0, len = arr.length;i < len;i ++){
                if(!isEven(arr[i])){
                    //当找到一个奇数,则将当前的位置的数交换到连续奇数后面
                    start ++;
                    swap(i, start, arr);
                }
            }
        }
        
        public static void execute(int[] arr){
            int left = 0, right = arr.length - 1;
            while(left < right){
                while(left < right && !isEven(arr[left])){
                    left ++;
                }
                
                while(left < right && isEven(arr[right])){
                    --right;
                }
                
                if(left <right){
                    swap(left, right, arr);
                }
            }
        }
    
        private static boolean isEven(int num) {
            return (num & 1) == 0;
        }
        
        private static void swap(int i, int j, int[] arr){
            int tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
    }

    参考:

    http://www.cnblogs.com/xing901022/p/3755795.html

    http://blog.chinaunix.net/uid-26548237-id-3753247.html

    http://www.cnblogs.com/kaituorensheng/p/3607118.html

  • 相关阅读:
    关于Python的面试题
    Python爬虫框架Scrapy学习笔记原创
    Python交互数据库(Mysql | Mongodb | Redis)
    后端程序员必备的Linux基础知识
    python的多路复用实现聊天群
    Python发送邮件(最全)
    7行Python代码的人脸识别
    python所遇到的坑
    Python图形界面开发—wxPython库的布局管理及页面切换
    机器学习:数据预处理之独热编码(One-Hot)
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/5507709.html
Copyright © 2020-2023  润新知