1.归并排序法,使用链表或数组容器
import java.util.ArrayList;
public class Solution {
public void reOrderArray(int [] array) {
if(array.length==1||array.length==0) return;
merge(array);
}
public void merge(int[] arr)
{
ArrayList<Integer> left = new ArrayList();
ArrayList<Integer> right = new ArrayList();
for(int i: arr)
{
if((i&1)==0)//偶数
{
right.add(i);
}else{
left.add(i);
}
}
int r = arr.length-1;
do{
arr[r--]=right.remove(right.size()-1);
}while(right.size()!=0);
do{
arr[r--]=left.remove(left.size()-1);
}while(left.size()!=0);
}
}方法二: 插入排序法
import java.util.ArrayList;
public class Solution {
public void reOrderArray(int [] array) {
if(array.length==1||array.length==0) return;
handle(array);
}
public void handle(int[] arr)
{
for(int i=0,j;i<arr.length;++i)
{
if((arr[i]&1)==0) continue;//arr[i] 是奇数,并且前一位是偶数
int curNode = arr[i];
for( j=i;j>0&&(arr[j-1]&1)==0;)
{
arr[j--]=arr[j];
}
arr[j]=curNode;
}
}
}两种方法,看你是想要快,还是内存小

京公网安备 11010502036488号