#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* prints array */
void pa (int *a, int len, char *s);
int comp=0,swaps=0;
int main() {
/* unsorted array */
int a[1000] ,qwe;
for(qwe=0;qwe<1000;qwe++)
int a_len = 1000;
pa(a, a_len, "unsorted array");
/* sort array */
int issorted = 1;
do {
// printf("\tsorting..\n");
issorted = 1;
int c;
for (c = 1; c <a_len ; c++) {
comp++;
if (a[c] < a[c-1]) {
swaps++;
issorted = 0;
// printf("\t\tswapping a[%d]=%d and a[%d]=%d\n", c-1, a[c-1], c, a[c]);
int tmp = a[c];
a[c] = a[c-1];
a[c-1] = tmp;
}
}
} while (issorted == 0);
printf("comparisons = %d swaps=%d\n",comp
,swaps
); pa(a, a_len, "sorted array");
return 0;
}
/* prints array */
void pa (int *a, int len, char *s) {
/*printf("%s: ", s);
int c;
for (c = 0; c < len; c++) {
printf("%d ", a[c]);
}
printf("\n");*/
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KLyogcHJpbnRzIGFycmF5ICovCnZvaWQgcGEgKGludCAqYSwgaW50IGxlbiwgY2hhciAqcyk7CmludCBjb21wPTAsc3dhcHM9MDsKaW50IG1haW4oKSB7CiAgICAvKiB1bnNvcnRlZCBhcnJheSAqLwogICAgaW50IGFbMTAwMF0gLHF3ZTsKICAgIHNyYW5kKHRpbWUoMCkpOwogICAgZm9yKHF3ZT0wO3F3ZTwxMDAwO3F3ZSsrKQogICAgICAgYVtxd2VdPXJhbmQoKTsKICAgIGludCBhX2xlbiA9IDEwMDA7CiAgICBwYShhLCBhX2xlbiwgInVuc29ydGVkIGFycmF5Iik7CgogICAgLyogc29ydCBhcnJheSAqLwogICAgaW50IGlzc29ydGVkID0gMTsKICAgIGRvIHsKICAgICAgIC8vIHByaW50ZigiXHRzb3J0aW5nLi5cbiIpOwogICAgICAgIGlzc29ydGVkID0gMTsKICAgICAgICBpbnQgYzsKICAgICAgICBmb3IgKGMgPSAxOyBjIDxhX2xlbiA7IGMrKykgewogICAgICAgIAljb21wKys7CiAgICAgICAgICAgIGlmIChhW2NdIDwgYVtjLTFdKSB7CiAgICAgICAgICAgIAlzd2FwcysrOwogICAgICAgICAgICAgICAgaXNzb3J0ZWQgPSAwOwogICAgICAgICAgIC8vICAgICBwcmludGYoIlx0XHRzd2FwcGluZyBhWyVkXT0lZCBhbmQgYVslZF09JWRcbiIsIGMtMSwgYVtjLTFdLCBjLCBhW2NdKTsKICAgICAgICAgICAgICAgIGludCB0bXAgPSBhW2NdOwogICAgICAgICAgICAgICAgYVtjXSA9IGFbYy0xXTsKICAgICAgICAgICAgICAgIGFbYy0xXSA9IHRtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gd2hpbGUgKGlzc29ydGVkID09IDApOwogICAgcHJpbnRmKCJjb21wYXJpc29ucyA9ICVkICBzd2Fwcz0lZFxuIixjb21wLHN3YXBzKTsKICAgIHBhKGEsIGFfbGVuLCAic29ydGVkIGFycmF5Iik7CgogICAgcmV0dXJuIDA7Cn0KCi8qIHByaW50cyBhcnJheSAqLwp2b2lkIHBhIChpbnQgKmEsIGludCBsZW4sIGNoYXIgKnMpIHsKICAgIC8qcHJpbnRmKCIlczogIiwgcyk7CiAgICBpbnQgYzsKICAgIGZvciAoYyA9IDA7IGMgPCBsZW47IGMrKykgewogICAgICAgIHByaW50ZigiJWQgIiwgYVtjXSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7Ki8KfQo=