import java.util.*;
public class sortieren {
private static int partition(int li, int re, int[] arr) {
int pivot = arr[re];
int a = li;
int b = re;
while (true) {
while (a < b && arr[a] < pivot) {
a++;
}
while (b > a && arr[b] >= pivot) {
b--;
}
if (a >= b)
break;
// vertausche arr[a] und arr[b]
int t = arr[a];
arr[a] = arr[b];
arr[b] = t;
}
arr[re] = arr[b];
arr[b] = pivot;
return b;
}
public static void qs(int li, int re, int[] arr) {
if (li >= re)
return;
int i = partition(li, re, arr);
qs(li, i - 1, arr);
qs(i + 1, re, arr);
}
public static void main
(String[] args
) { int arr[] = { 4, 9, 7, 2, 0, 6, 3, 5, 8, 1 };
qs(0, arr.length - 1, arr);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIHNvcnRpZXJlbiB7Cglwcml2YXRlIHN0YXRpYyBpbnQgcGFydGl0aW9uKGludCBsaSwgaW50IHJlLCBpbnRbXSBhcnIpIHsKCQlpbnQgcGl2b3QgPSBhcnJbcmVdOwoKCQlpbnQgYSA9IGxpOwoJCWludCBiID0gcmU7CgkJd2hpbGUgKHRydWUpIHsKCQkJd2hpbGUgKGEgPCBiICYmIGFyclthXSA8IHBpdm90KSB7CgkJCQlhKys7CgkJCX0KCQkJd2hpbGUgKGIgPiBhICYmIGFycltiXSA+PSBwaXZvdCkgewoJCQkJYi0tOwoJCQl9CgoJCQlpZiAoYSA+PSBiKQoJCQkJYnJlYWs7CgoJCQkvLyB2ZXJ0YXVzY2hlIGFyclthXSB1bmQgYXJyW2JdCgoJCQlpbnQgdCA9IGFyclthXTsKCQkJYXJyW2FdID0gYXJyW2JdOwoJCQlhcnJbYl0gPSB0OwoJCX0KCgkJYXJyW3JlXSA9IGFycltiXTsKCQlhcnJbYl0gPSBwaXZvdDsKCQlyZXR1cm4gYjsKCX0KCglwdWJsaWMgc3RhdGljIHZvaWQgcXMoaW50IGxpLCBpbnQgcmUsIGludFtdIGFycikgewoJCWlmIChsaSA+PSByZSkKCQkJcmV0dXJuOwoJCWludCBpID0gcGFydGl0aW9uKGxpLCByZSwgYXJyKTsKCgkJcXMobGksIGkgLSAxLCBhcnIpOwoJCXFzKGkgKyAxLCByZSwgYXJyKTsKCX0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJaW50IGFycltdID0geyA0LCA5LCA3LCAyLCAwLCA2LCAzLCA1LCA4LCAxIH07CgoJCXFzKDAsIGFyci5sZW5ndGggLSAxLCBhcnIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcoYXJyKSk7Cgl9Cgp9