#include <iostream>
using namespace std;
void swap(int *a, int *b) {
int tmp;
tmp = *b;
*b = *a;
*a = tmp;
}
void sort(int *arr, int len) {
int start = 0, mid = 0, end = len - 1;
while (mid <= end) {
switch (arr[mid]) {
case 0:
swap(&arr[start], &arr[mid]);
start++;
mid++;
break;
case 1:
mid++;
break;
case 2:
swap(&arr[mid], &arr[end]);
end--;
break;
}
}
}
int main() {
int arr[] = {2, 1, 0, 0, 1, 2, 2, 1, 1, 2};
int len = sizeof(arr)/sizeof(arr[0]);
sort(arr, len);
for(int i = 0; i < len; i++)
cout << arr[i] << " ";
return 0;
}
/*
run:
0 0 1 1 1 1 2 2 2 2
*/