题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
实现语言:Java
public class Solution {
public void reOrderArray(int [] array) {
int len=array.length;
if(len==0||array==null){
return;
}
int i=0;
int j=0;
while(i<len){
while(i<len&&!isEven(array[i])){
++i;
}
j=i+1;
while(j<len&&isEven(array[j])){
++j;
}
if(j<len){
int tmp=array[j];
for(int k=j-1;k>=i;--k){
array[k+1]=array[k];
}
array[i++]=tmp;
}else{
break;
}
}
}
private boolean isEven(int num){
if(num%2==0){
return true;
}
return false;
}
}
实现语言:Java
类似冒泡算法,前偶后奇数就交换
public class Solution {
public void reOrderArray(int [] array) {
if(array==null||array.length==0){
return;
}
for(int i=0;i<array.length;++i){
for(int j=array.length-1;j>i;--j){
if(array[j]%2==1&&array[j-1]%2==0){
array[j-1]=array[j]+array[j-1];
array[j]=array[j-1]-array[j];
array[j-1]=array[j-1]-array[j];
}
}
}
}
}