调整数组顺序

题目描述

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

分析

归并排序法,使用链表或数组容器

代码

import java.util.ArrayList;
public class Solution {
    public void reOrderArray(int [] array) {
        if(array.length==1||array.length==0) return;
        merge(array);
    }
 
    public void merge(int[] arr)
    {
        ArrayList<Integer> left = new ArrayList();
        ArrayList<Integer> right = new ArrayList();
 
        for(int i: arr)
        {
            if((i&1)==0)//偶数
            {
                right.add(i);
            }else{
                left.add(i);
            }
        }
        int r = arr.length-1;
        do{
            arr[r--]=right.remove(right.size()-1);
        }while(right.size()!=0);
 
        do{
            arr[r--]=left.remove(left.size()-1);
        }while(left.size()!=0);
    }
 
}

总结

  • 若判断一个数的奇偶性,当然可以判断除以2的余数,但是也可以用与运算,与1相与,这样效率更高。
  • array 与 ArrayList之间的转换方式也很有趣。ArrayList相对于array来说,与数组不同,数组一旦创建,长度固定,但是ArrayList的长度是动态的,不受限制,可以存储任意多的对象。
  • for(int i: arr): 这是java中的foreach语句,作用是遍历数组arr中的所有元素。在这之后如果编写输出程序,会输出arr中的所有元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值