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

原创微博,转载请注明出处。

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

解题思路:从 左向右 扫描给出的array数组

  • j 指向的当前偶数所在位置;
  • i 为从左项右扫描数组,当array[i]为奇数时,array[j] array[j+1] array[j+2]... array[i-1]依次向右移动至 array[j+1] array[j+2] array[j+3]... array[i]位置,原 array[i] 调整至原 array[j] 所在位置。
  • 当把数组扫描完时结束,即 i=array.length时结束。

扫描(数组元素移动过程如下图所示):其中 temp 保存原 array[i] 值,right 保存需要移动的元素值的下标位置。

初始态:

 java代码如下:

public void reOrderArray(int [] array) {
		int temp, right;
        for(int i=0,j=0; i<array.length; i++) {
	        if((array[i]&1) !=0 ) {
	        	right = i;
	        	temp = array[right];
	        	while(j<right) {
	        		array[right] = array[--right];
	        	}
	        	array[j] = temp;
	        	j++;
	        }
        }
        //for(int i=0; i<array.length; i++)
        	//System.out.println(array[i]);
    }

欢迎留言讨论^_^

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值