调整数组顺序使奇数位于偶数前面。
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,
思路: 设置两个p1和p2指针,p1首先指向开始,p2指向最后,然后从p1开始,当遇到第一个偶数时,停止向前,接下来
让p2从后往前移动,当遇到第一个奇数时,停止下来,然后交换着两个数。
/**
*
* 输入一个数组然后让数组中奇数位于前面,偶数在数组的后面
*
*/
public class OvenSin {
public static void main(String[] args) {
int[] a= {1,2,3,4,5,6,7,8};
resetArray(a);
for(int t:a){
System.out.print(t);
}
}
private static void resetArray(int[] a) {
if(a==null)return ;
int p1=0;
int p2=a.length-1;
while(p1<p2){
//首先找到第一个偶数的位置,通过p1指针
while(p1<p2&&((a[p1]&0x1)==1))p1++;
//首先找到第一个奇数的位置,通过p2指针
while(p1<p2&&((a[p2]&0x1)==0))p2--;
if(p1<p2){
int temp=a[p1];
a[p1]=a[p2];
a[p2]=temp;
}
}
}
}