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

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

调整数组顺序使奇数位于偶数前面


题目:


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


代码:

package com.hlq.test;
/**
 * @author helongqiang
 * @date 2020/5/15 23:22
 */
/**
 * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
 * 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后
 * 半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
 */
public class Solution {
    public void reOrderArray(int[] array){
        int len = array.length;
        if(len <= 1){
            return;
        }
        int i = 0;
        while (i <= len){
            if(array[i] % 2 == 1) {
                i++;
            }else{
                int j = i + 1;
                while (array[j] % 2 == 0){
                    if(j == len-1){
                        return;
                    }
                    j++;
                }
                int tmp = array[j];
                while(j > i){
                    array[j] = array[j-1];
                    j--;
                }
                array[i] = tmp;
            }
        }
    }
}
相关文章
|
4天前
|
存储 Java 索引
个人笔记—Java基础—数组
该内容是关于数组的介绍。数组是一种容器,用于存储同类型的多个值。初始化有静态和动态两种方式:静态初始化是在创建时直接指定元素,有完整和简写格式;动态初始化则只指定类型和长度,不给定具体元素。访问数组元素通过索引,从0开始,修改元素是`数组名[索引] = 值`,数组长度是`数组名.length`。遍历数组通常用for循环。内存分配上,类信息和静态数据存放在方法区,栈内存负责方法执行和局部变量,堆内存用于new出的对象和数组,有默认初始值。
22 0
|
4天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
4天前
|
存储 Java 索引
【Java开发指南 | 第十六篇】Java数组及Arrays类
【Java开发指南 | 第十六篇】Java数组及Arrays类
10 3
|
4天前
|
Java 索引
Java中数组详解
Java中数组详解
45 19
|
4天前
|
Java
解析java中的数组
解析java中的数组
15 3
|
4天前
|
存储 安全 Java
Java一分钟之-数组的创建与遍历
【5月更文挑战第8天】本文介绍了Java中数组的基本概念、创建与遍历方法,强调了类型匹配和数组越界问题。示例展示了如何创建整数数组并初始化元素,同时提供了避免数组越界的策略。对于遍历,文章提到了for循环和增强型for循环,并给出了防止错误的建议,如正确声明类型、初始化数组、安全索引操作及使用合适的数据结构。遵循这些指导可帮助开发者有效管理Java数组并减少错误。
19 0
|
4天前
|
存储 Java 索引
Java数组
Java数组
24 0
|
4天前
|
存储 算法 Java
【Java探索之旅】掌握数组操作,轻松应对编程挑战
【Java探索之旅】掌握数组操作,轻松应对编程挑战
12 0
|
4天前
|
存储 Java C语言
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
14 0
|
4天前
|
存储 机器学习/深度学习 Java
【Java探索之旅】数组使用 初探JVM内存布局
【Java探索之旅】数组使用 初探JVM内存布局
28 0