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++);
                    }
                }
            }
        }
  • 相关阅读:
    满血复活
    绝望,绝望、希望
    认真生活的态度
    星期一
    户外穿越
    认真准备
    早点休息
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
  • 原文地址:https://www.cnblogs.com/MrSaver/p/12109281.html
Copyright © 2011-2022 走看看