• 剑指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++);
                    }
                }
            }
        }
  • 相关阅读:
    【GoLang】转载:我为什么放弃Go语言,哈哈
    【GoLang】golang runtime 调度原理
    【GoLang】golang 微服务框架 介绍
    Redis缓存与springboot集成
    Redis分布式锁
    springboot配置文件的配置
    分布式事务之学习
    快速学习
    CAP定理为什么只能同时满足两个
    requestMapping之地址映射
  • 原文地址:https://www.cnblogs.com/MrSaver/p/12109281.html
Copyright © 2020-2023  润新知