题解 | #调整数组顺序使奇数位于偶数前面#
调整数组顺序使奇数位于偶数前面
http://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593
public class Solution {
public void reOrderArray(int [] array) {
//重点在于相对位置不变
//思路:遍历数组,如果找到奇数,
//1.把这个奇数保存起来
//2.把奇数前面的偶数整体往后挪一个位置
//3.把奇数按照先后顺序放到前面空出来的位置
int k=0;//从第一个位置开始
for(int i=0;i<array.length;i++){
if((array[i]&1)==1){
int tmp=array[i];
int j=i;
while(j>k){
//边界判断:当数组第一个位置为偶数,第一次循环开始
//k=0,执行到最后j=1,把0位置的偶数后挪正好
array[j]=array[j-1];
j--;
}
array[k++]=tmp;//k++先执行再+1,确保奇数能按顺序放置
}
}
}
}
public void reOrderArray(int [] array) {
//重点在于相对位置不变
//思路:遍历数组,如果找到奇数,
//1.把这个奇数保存起来
//2.把奇数前面的偶数整体往后挪一个位置
//3.把奇数按照先后顺序放到前面空出来的位置
int k=0;//从第一个位置开始
for(int i=0;i<array.length;i++){
if((array[i]&1)==1){
int tmp=array[i];
int j=i;
while(j>k){
//边界判断:当数组第一个位置为偶数,第一次循环开始
//k=0,执行到最后j=1,把0位置的偶数后挪正好
array[j]=array[j-1];
j--;
}
array[k++]=tmp;//k++先执行再+1,确保奇数能按顺序放置
}
}
}
}