数组特性:根据下标取值
思路:首尾指针(或下标)分别判断指向元素值是否奇数或偶数。
首指针对应值为奇数指针向后移动(自加运算),偶数不移动。
尾指针对应值为偶数指针向后移动(自减运算),奇数不移动。
首指针对应值为偶数,尾指针对应值为奇数交换两个值。
收尾指针相等结束。
import java.util.Arrays;
//数据组中包含奇数偶数,将奇数交换到数组前半部分。
public class ArrayElementExchange {
public static void main(String[] args) {
int[] array={7,1,3,4,5,6,9};
System.out.println(Arrays.toString(exchange(array)));
}
public static int[] exchange(int[] array){
int headPointer=0;
int tailPointer=array.length-1;
for(int a :array){
if(headPointer==tailPointer){
break;
}
if(isEvenumber(array[headPointer])){
if(!isEvenumber(array[tailPointer])){
int temp=array[headPointer];
array[headPointer]=array[tailPointer];
array[tailPointer]=temp;
}else{
tailPointer--;
}
}else{
headPointer++;
}
}
return array;
}
public static boolean isEvenumber(int number){
return number%2==0;
}
}
思考:将偶数交换到数组前半部分?
思路一样只不过首尾指针判断逻辑互换一下。