数组:调整一个数组,把奇数放在前半部分,偶数在后半部分

这个笔试题,我在网上找了答案,但是我上机试了一下,发现网上的答案有错误,所以我又调试了一下,先将题目展示一下,之后说说我的思路,最后奉上我的代码。
题目为:调整一个数组,把奇数放在前半部分,偶数在后半部分。
思路为:从前面开始找偶数,从后面开始找奇数,用begin和end分别做标记,找到之后进行交换,但是在交换之前一定要判断begin是否小于end,否则会出现错误。
代码如下:
/**
* 调整一个数组,把奇数放在前半部分,偶数在后半部分
* 思路:从前面开始找偶数,从后面开始找奇数
* 0 1 2 3 4 5
* 1, 2, 3, 4, 5, 6
*/
public static int[]a =new int[]{1,2,3,4,5,6};
public static void main(String[] args) {
RecordOddEven();
display();
}
/**
* 思路是:从前面开始扫描,从前面开始找奇数,从后面开始找偶数,如果找到了就交换,记住交换之前也一定要记住这个条件:begin */
public static void display(){
for(int i=0;i System.out.print(a[i]+" ");
}
}
public static void RecordOddEven(){
int begin=0;
int end=a.length-1;
while(begin while(!isEven(a[begin])){
begin++;
}
while(isEven(a[end])){
end--;
}
if(begin int temp=a[begin];
a[begin]=a[end];
a[end]=temp;


begin++;
end--;
}
}


}
//判断是否是偶数
public static boolean isEven(int b){
return b%2==0;
}

你可能感兴趣的:(面试题)