#include <stdio.h>
void swap (double *a, double *b) {
double temp = *a;
*a = *b;
*b = temp;
}
void qsort_inplace_inner (double list[], long start, long end) {
if (end - start <= 1) { return; }
long pivotPos = start, partitionStart = start + 1, partitionEnd = end;
while (partitionEnd - partitionStart > 0) {
if (list[partitionStart] < list[pivotPos]) {
swap(&list[pivotPos], &list[partitionStart]);
pivotPos = partitionStart;
partitionStart++;
}
else {
swap(&list[partitionStart], &list[partitionEnd-1]);
partitionEnd--;
}
}
qsort_inplace_inner(list, start, pivotPos);
qsort_inplace_inner(list, pivotPos + 1, end);
}
void qsort_inplace (double list[], long len) {
qsort_inplace_inner(list, 0, len);
}
int main(void) {
int i;
double test[] = {85.06,
76.68,
35.32,
45.15,
9.85,
2.31,
37.93,
74.72,
93.11,
90.97,
30.62,
64.23,
61.06,
40.58,
40.56,
41.50,
88.69,
62.26,
50.41,
7.04};
for (i = 0; i < 20; i++) {
}
qsort_inplace(test, 20);
for (i = 0; i < 20; i++) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHN3YXAgKGRvdWJsZSAqYSwgZG91YmxlICpiKSB7Cglkb3VibGUgdGVtcCA9ICphOwoJKmEgPSAqYjsKCSpiID0gdGVtcDsKfQoKdm9pZCBxc29ydF9pbnBsYWNlX2lubmVyIChkb3VibGUgbGlzdFtdLCBsb25nIHN0YXJ0LCBsb25nIGVuZCkgewoJaWYgKGVuZCAtIHN0YXJ0IDw9IDEpIHsgcmV0dXJuOyB9Cglsb25nIHBpdm90UG9zID0gc3RhcnQsIHBhcnRpdGlvblN0YXJ0ID0gc3RhcnQgKyAxLCBwYXJ0aXRpb25FbmQgPSBlbmQ7Cgl3aGlsZSAocGFydGl0aW9uRW5kIC0gcGFydGl0aW9uU3RhcnQgPiAwKSB7CgkJaWYgKGxpc3RbcGFydGl0aW9uU3RhcnRdIDwgbGlzdFtwaXZvdFBvc10pIHsKCQkJc3dhcCgmbGlzdFtwaXZvdFBvc10sICZsaXN0W3BhcnRpdGlvblN0YXJ0XSk7CgkJCXBpdm90UG9zID0gcGFydGl0aW9uU3RhcnQ7CgkJCXBhcnRpdGlvblN0YXJ0Kys7CgkJfQoJCWVsc2UgewoJCQlzd2FwKCZsaXN0W3BhcnRpdGlvblN0YXJ0XSwgJmxpc3RbcGFydGl0aW9uRW5kLTFdKTsKCQkJcGFydGl0aW9uRW5kLS07CgkJfQoJfQoJcXNvcnRfaW5wbGFjZV9pbm5lcihsaXN0LCBzdGFydCwgcGl2b3RQb3MpOwoJcXNvcnRfaW5wbGFjZV9pbm5lcihsaXN0LCBwaXZvdFBvcyArIDEsIGVuZCk7Cn0KCnZvaWQgcXNvcnRfaW5wbGFjZSAoZG91YmxlIGxpc3RbXSwgbG9uZyBsZW4pIHsKCXFzb3J0X2lucGxhY2VfaW5uZXIobGlzdCwgMCwgbGVuKTsKfQoKaW50IG1haW4odm9pZCkgewoJaW50IGk7Cglkb3VibGUgdGVzdFtdID0gezg1LjA2LAogICAgICAgICAgICAgICAgICAgICA3Ni42OCwKICAgICAgICAgICAgICAgICAgICAgMzUuMzIsCiAgICAgICAgICAgICAgICAgICAgIDQ1LjE1LAogICAgICAgICAgICAgICAgICAgICA5Ljg1LAogICAgICAgICAgICAgICAgICAgICAyLjMxLAogICAgICAgICAgICAgICAgICAgICAzNy45MywKICAgICAgICAgICAgICAgICAgICAgNzQuNzIsCiAgICAgICAgICAgICAgICAgICAgIDkzLjExLAogICAgICAgICAgICAgICAgICAgICA5MC45NywKICAgICAgICAgICAgICAgICAgICAgMzAuNjIsCiAgICAgICAgICAgICAgICAgICAgIDY0LjIzLAogICAgICAgICAgICAgICAgICAgICA2MS4wNiwKICAgICAgICAgICAgICAgICAgICAgNDAuNTgsCiAgICAgICAgICAgICAgICAgICAgIDQwLjU2LAogICAgICAgICAgICAgICAgICAgICA0MS41MCwKICAgICAgICAgICAgICAgICAgICAgODguNjksCiAgICAgICAgICAgICAgICAgICAgIDYyLjI2LAogICAgICAgICAgICAgICAgICAgICA1MC40MSwKICAgICAgICAgICAgICAgICAgICAgNy4wNH07CiAgICBwcmludGYoIkJlZm9yZTogIik7Cglmb3IgKGkgPSAwOyBpIDwgMjA7IGkrKykgewoJCXByaW50ZigiJS4yZiAiLCB0ZXN0W2ldKTsKCX0KCXByaW50ZigiXG4iKTsKCXFzb3J0X2lucGxhY2UodGVzdCwgMjApOwoJcHJpbnRmKCIgQWZ0ZXI6ICIpOwoJZm9yIChpID0gMDsgaSA8IDIwOyBpKyspIHsKCQlwcmludGYoIiUuMmYgIiwgdGVzdFtpXSk7Cgl9CglwcmludGYoIlxuIik7CglyZXR1cm4gMDsKfQo=