已知有三种颜色的球 蓝白红 (0 1 2)随机打乱 写一个排序算法,要求空间复杂度为O(1) 时间复杂度为O(n)
int [] fun(int [] a){
int end = a.length-1,start=0,temp;
for (int i = 0; i < a.length; i++) {
if(i==end) return a;
if(a[i]==0) {
temp = a[i];
a[i] = a[start];
a[start] = temp;
start++;
if(a[start] == 0) start++;
}
else if(a[i]==2) {
temp = a[i];
a[i] = a[end];
a[end] = temp;
end--;
if(a[end]==2) end--;
}
}
return a;
}