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

题目描述

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

题解:将整数数组中的奇数放在一个数组,将偶数放在另一个数组中,然后合并这两个数组的数据。

public class Solution {
    public void reOrderArray(int[] array) {
		//空数组,长度为1的数组或者是null则直接不用计算
		if (array == null || array.length == 0 || array.length == 1) {
			return;
		} else {
			//定义两个数组存放数据,一个放奇数,一个放偶数
			//数组长度为传入的数组array的长度,防止array存放的全是偶数或者奇数的情况
			int arr1[] = new int[array.length];
			int arr2[] = new int[array.length];
			//定义两个数记录奇数有几个,偶数有几个
			int ji = 0,ao = 0;
			//遍历array
			for(int i = 0;i < array.length;i++) {
				//判断是否是奇数
				if(array[i] % 2 != 0) {
					arr1[ji++]=array[i];
				}else {
					arr2[ao++]=array[i];
				}
			}
			//将奇数放入array中
			for(int i = 0;i < ji;i++) {
				array[i] = arr1[i];
			}
			for(int i = 0;i < ao;i++) {
				//在奇数的后面按顺序放入偶数
				array[ji + i] = arr2[i];
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39290830/article/details/81713122