#include <stdio.h>
int cmp(int x, int y) // compare x and y
{
return x > y; // 1 if x > y, 0 otherwise
}
void swap(int *x, int *y)
{ int tmp = *x;
*x = *y;
*y = tmp;
}
int main(void)
{
int a[] = {3, 1, 4, 1, 5, 9, 2, 6, 5}; // array to be sorted
size_t n = sizeof a / sizeof a[0]; // number of elements
int swap_count = 0;
for (size_t i = 0; i < n - 1; ++i) {
int swapped = 0;
for (size_t j = 0; j < n - 1 - i; ++j) {
if (cmp( a[j] , a[j+1] )) {
swap(&a[j] , &a[j+1] );
++swap_count;
swapped = 1;
}
}
if(swapped == 0)
break;
}
printf("swap_count = %d\n", swap_count
);
for (size_t i = 0; i < n; ++i) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgogaW50IGNtcChpbnQgeCwgaW50IHkpIC8vIGNvbXBhcmUgeCBhbmQgeQogewogcmV0dXJuIHggPiB5OyAvLyAxIGlmIHggPiB5LCAwIG90aGVyd2lzZQogfQoKIHZvaWQgc3dhcChpbnQgKngsIGludCAqeSkKIHsgaW50IHRtcCA9ICp4OwoKICp4ID0gKnk7CiAqeSA9IHRtcDsKIH0KCiBpbnQgbWFpbih2b2lkKQogewogCiBpbnQgYVtdID0gezMsIDEsIDQsIDEsIDUsIDksIDIsIDYsIDV9OyAvLyBhcnJheSB0byBiZSBzb3J0ZWQKIHNpemVfdCBuID0gc2l6ZW9mIGEgLyBzaXplb2YgYVswXTsgLy8gbnVtYmVyIG9mIGVsZW1lbnRzCmludCBzd2FwX2NvdW50ID0gMDsKIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbiAtIDE7ICsraSkgewogCWludCBzd2FwcGVkID0gMDsKIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbiAtIDEgLSBpOyArK2opIHsKIGlmIChjbXAoIGFbal0gLCBhW2orMV0gKSkgewogc3dhcCgmYVtqXSAsICZhW2orMV0gKTsKIAkrK3N3YXBfY291bnQ7CiAJc3dhcHBlZCA9IDE7CiB9CiB9CmlmKHN3YXBwZWQgPT0gMCkKICAgIGJyZWFrOwogfQogCnByaW50Zigic3dhcF9jb3VudCA9ICVkXG4iLCBzd2FwX2NvdW50KTsKCiBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewogcHJpbnRmKCIlZCAiLCBhW2ldKTsKIH0KIHByaW50ZigiXG4iKTsKCiByZXR1cm4gMDsKIH0KCgkKCg==