#include <stdio.h>
int cmp(int x, int y)
{
return x < y;
}
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};
size_t n = sizeof a / sizeof a[0];
int count = 0;
for (size_t i = 0; i < n - 1; ++i) {
int irekae = 0;
for (size_t j = 0; j < n - 1 - i; ++j) {
if (cmp(a[j], a[j + 1])) {
swap(&a[j], &a[j + 1]);
irekae = 1;
count++;
}
}
if (irekae == 0) {
break;
}
}
printf("swapの呼び出し回数:%d回\n", count
);
for (size_t i = 0; i < n; ++i) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgY21wKGludCB4LCBpbnQgeSkKewogICAgcmV0dXJuIHggPCB5Owp9Cgp2b2lkIHN3YXAoaW50ICp4LCBpbnQgKnkpCnsKICAgIGludCB0bXAgPSAqeDsKICAgICp4ID0gKnk7CiAgICAqeSA9IHRtcDsKfQoKaW50IG1haW4odm9pZCkKewogICAgaW50IGFbXSA9IHszLCAxLCA0LCAxLCA1LCA5LCAyLCA2LCA1fTsKICAgIHNpemVfdCBuID0gc2l6ZW9mIGEgLyBzaXplb2YgYVswXTsKCiAgICBpbnQgY291bnQgPSAwOwoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbiAtIDE7ICsraSkgewogICAgICAgIGludCBpcmVrYWUgPSAwOwoKICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG4gLSAxIC0gaTsgKytqKSB7CiAgICAgICAgICAgIGlmIChjbXAoYVtqXSwgYVtqICsgMV0pKSB7CiAgICAgICAgICAgICAgICBzd2FwKCZhW2pdLCAmYVtqICsgMV0pOwoKICAgICAgICAgICAgICAgIGlyZWthZSA9IDE7CiAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXJla2FlID09IDApIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIAogICAgcHJpbnRmKCJzd2Fw44Gu5ZG844Gz5Ye644GX5Zue5pWw77yaJWTlm55cbiIsIGNvdW50KTsKCiAgIAogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBwcmludGYoIiVkICIsIGFbaV0pOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwoKICAgIHJldHVybiAwOwp9