class DutchNationalFlag {
static void dutchFlagSort(int inArray[], int arraySize, int high, int low) {
if (arraySize == 0)
return;
int lower = 0;
while (inArray[lower] == low && lower < arraySize)
lower++;
int upper = arraySize - 1;
while (inArray[upper] == high && upper >= 0)
upper--;
int temp = 0;
int pivot;
for (pivot = lower; pivot <= upper;) {
if (inArray[pivot] == low) {
temp = inArray[pivot];
inArray[pivot] = inArray[lower];
inArray[lower] = temp;
pivot++;
lower++;
} else if (inArray[pivot] == high) {
temp = inArray[pivot];
inArray[pivot] = inArray[upper];
inArray[upper] = temp;
upper--;
} else
pivot++;
}
}
public static void main
(String[] args
) { int arr [] = {0,1,2,1,2,0,1,1,1,0,0,0,1,0,2,1};
dutchFlagSort(arr, arr.length, 2, 0);
for (int i = 0; i < arr.length; i++)
System.
out.
print(arr
[i
] + " "); }
}
Y2xhc3MgRHV0Y2hOYXRpb25hbEZsYWcgewoKICAgIHN0YXRpYyB2b2lkIGR1dGNoRmxhZ1NvcnQoaW50IGluQXJyYXlbXSwgaW50IGFycmF5U2l6ZSwgaW50IGhpZ2gsIGludCBsb3cpIHsKCQlpZiAoYXJyYXlTaXplID09IDApCgkJCXJldHVybjsKCgkJaW50IGxvd2VyID0gMDsKCQl3aGlsZSAoaW5BcnJheVtsb3dlcl0gPT0gbG93ICYmIGxvd2VyIDwgYXJyYXlTaXplKQoJCQlsb3dlcisrOwoKCQlpbnQgdXBwZXIgPSBhcnJheVNpemUgLSAxOwoJCXdoaWxlIChpbkFycmF5W3VwcGVyXSA9PSBoaWdoICYmIHVwcGVyID49IDApCgkJCXVwcGVyLS07CgoJCWludCB0ZW1wID0gMDsKCQlpbnQgcGl2b3Q7CgkJZm9yIChwaXZvdCA9IGxvd2VyOyBwaXZvdCA8PSB1cHBlcjspIHsKCQkJaWYgKGluQXJyYXlbcGl2b3RdID09IGxvdykgewoJCQkJdGVtcCA9IGluQXJyYXlbcGl2b3RdOwoJCQkJaW5BcnJheVtwaXZvdF0gPSBpbkFycmF5W2xvd2VyXTsKCQkJCWluQXJyYXlbbG93ZXJdID0gdGVtcDsKCQkJCXBpdm90Kys7CgkJCQlsb3dlcisrOwoJCQl9IGVsc2UgaWYgKGluQXJyYXlbcGl2b3RdID09IGhpZ2gpIHsKCQkJCXRlbXAgPSBpbkFycmF5W3Bpdm90XTsKCQkJCWluQXJyYXlbcGl2b3RdID0gaW5BcnJheVt1cHBlcl07CgkJCQlpbkFycmF5W3VwcGVyXSA9IHRlbXA7CgkJCQl1cHBlci0tOwoJCQl9IGVsc2UKCQkJCXBpdm90Kys7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlpbnQgYXJyIFtdID0gezAsMSwyLDEsMiwwLDEsMSwxLDAsMCwwLDEsMCwyLDF9OwoJCWR1dGNoRmxhZ1NvcnQoYXJyLCBhcnIubGVuZ3RoLCAyLCAwKTsKCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspCgkJCVN5c3RlbS5vdXQucHJpbnQoYXJyW2ldICsgIiAiKTsKCX0KfQo=