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

    剑指Offer:调整数组顺序使奇数位于偶数前面

    题目描述

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

    题目分析

      给定的是整数数组,但其实只有两类数,即奇数和偶数,我们并不需要关注数组元素的数字大小,可以将奇数看作A,偶数看作B,即对数组作如下变换:

      此时,这道题目就是对一个数组中的A、B两元素进行排序了,但是题目要求奇数与奇数、偶数与偶数的相对位置不变,即怕我们必须进行稳定性排序。

      最简单的稳定排序方法有:

    • 归并排序
    • 直接插入排序
    • 冒泡排序

      这三种算法均可以满足题目要求,此处,我们以冒泡排序为例。

      我们需要注意的是,相比传统排序比较相邻数字的大小关系转变了奇偶关系,即保证偶数往右边移动且保证稳定性的基础是,交换原则是左边数字是必须是偶数,右边数字必须是是奇数

    Java题解

        /**
         * 冒泡排序
         * @param array
         */
        public void reOrderArray(int [] array) {
            for(int i= array.length-1;i>=0;i--){
                for(int j=0;j+1<=i;j++){
                    if(array[j]%2==0&&array[j+1]%2==1){
                        swap(array,j,j++);
                    }
                }
            }
        }
  • 相关阅读:
    四则运算出题器
    四则运算出题网页
    四则运算自动生成器实现(python、wxpython、GUI)
    python 实现小学四则运算
    Process and Thread States
    COS AP-开启WPA后无法关联SSID!
    WLC MAC Filtering
    禅道--个人理解 简单介绍
    IDEA解决乱码
    avue 实现自定义列显隐并保存,并且搜索表单、form表单、crud列顺序互不影响。
  • 原文地址:https://www.cnblogs.com/MrSaver/p/12109281.html
Copyright © 2011-2022 走看看