题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,
运行结果如下:
所有偶数位于数组的后半部分。要求时间复杂度为O(n)。
代码如下:
public class partition {
/**
* @param PLA
* 题目:输入一个整数数组,调整数组中数字的顺序,使得
所有偶数位于数组的后半部分。要求时间复杂度为O(n)。
*/
/*思路:
* 设置俩指针i、j,让i从头开始遍历数组,若遇到偶数,则i++,继续;
* 若遇到奇数,则将i与j++值调换*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] que = new int[]{7,4,4,3,5,7,6,8,4,3};
int length = que.length;
getPartition(que,length);
}
private static void getPartition(int[] que, int length) {
// TODO Auto-generated method stub
int i=0,j=0;
while(i<length&&(que[i]&1)==0)i++;//遇到偶数,继续遍历
if(i==length)return;
while(i<length){
if((que[i]&1)==1){
swap(que,i,j++);
}
i++;
}
for(int t:que){
System.out.println(t);
}
}
private static void swap(int[] que, int i, int j) {
// TODO Auto-generated method stub
int temp = 0;
temp = que[i];
que[i] = que[j];
que[j] = temp;
}
}
运行结果如下:
7
3
5
7
3
4
6
8
4
4