#![allow(non_snake_case)]
fn swap_values(array: &mut [isize], index1: usize, index2: usize) {
let temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
fn sort012Array(arr : &mut [isize]) {
let mut lo : usize = 0;
let mut curr : usize = 0;
let mut hi : usize = arr.len() - 1;
while curr <= hi {
if arr[curr as usize] == 0 {
swap_values(arr, lo, curr);
lo += 1;
curr += 1;
}
else if arr[curr as usize] == 1 {
curr += 1;
}
else if arr[curr as usize] == 2 {
swap_values(arr, curr, hi);
hi -= 1;
}
}
}
fn main()
{
let mut arr = [1, 2, 2, 0, 1, 1, 0, 2, 0, 1, 0, 0, 1];
sort012Array(&mut arr);
{
let mut i : usize = 0;
while i < arr.len() {
print!("{} ", arr[i as usize]);
i += 1;
}
}
}
/*
run:
0 0 0 0 0 1 1 1 1 1 2 2 2
*/