题目描述:有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序。
给定一个只含0,1,2的整数数组A及它的大小,请返回排序后的数组。保证数组大小小于等于500。
测试样例:
[0,1,1,0,2,2],6
返回:[0,0,1,1,2,2]
import java.util.*;
public class ThreeColor {
public int[] sortThreeColor(int[] A, int n) {
// write code here
int left = 0;
int right = n-1;
for(int i=0;i<n;i++){
if(right<i){
break;
}
else if(A[i] == 0 &&left<=right){
change(A,left,i);
left++;
}
else if(A[i] == 2 &&left<=right){
change(A,right,i);
right--;
i--;
}
}
return A;
}
public void change(int[] A,int a,int b){
if(a!=b){
int tem =A[a];
A[a] = A[b];
A[b] = tem;
}
}
}