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

题一:不需要奇数和偶数的相对位置不变,即剑指offer里的题目形式,这个比较简单,直接用两个指针分别指向头尾,然后向中间逼近,遇到前偶后奇就将两个指针指向的位置进行交换

public static void reOrderArray(int[] array){
		int i=0,j=array.length-1;
        while(i<j){
            while(i<array.length&&isOdd(array[i]))
                i++;
            while(j>=0&&!isOdd(array[j]))
                j--;
            if(i<j){
                int temp=array[i];
                array[i]=array[j];
                array[j]=temp;
            }
        }
	}
    public static boolean isOdd(int i){
        return (i&1)!=0;
    }

题二:要求奇数位和偶数位的相对位置不变,这个我并没有想到什么好办法,就先用冒泡排序,将相邻两个数前偶后奇的进行交换,经过多次交换后即可

public class Solution {
    public void reOrderArray(int [] array) {
        int temp;
		  for(int i=0;i<array.length; i++){
			  for(int j=0; j<array.length-i-1; j++){
				  if(!isOdd(array[j]) && isOdd(array[j+1])){
					  temp = array[j];
					  array[j] = array[j+1];
					  array[j+1] = temp;
				  }
			  }
		  }
    }
    public boolean isOdd(int i){
        return (i&1)!=0;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值