#include <stdio.h>
int huge;
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)
{ huge++;
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 static count=0;
for (size_t i = 0; i < n - 1; ++i) {
int count=0;
for (size_t j = 0; j < n - 1 - i; ++j) {
if (cmp( a[j] , a[j+1] )) {
swap( &a[ j ] , &a[ j+1 ] );
count++;
}
}
if (count==0){
break;
}
}
for (size_t i = 0; i < n; ++i) {
}
printf("swap関数は%d回呼び出される",huge
); return 0;
}
ICNpbmNsdWRlIDxzdGRpby5oPgogaW50IGh1Z2U7CiBpbnQgY21wKGludCB4LCBpbnQgeSkgLy8gY29tcGFyZSB4IGFuZCB5CiB7CiByZXR1cm4geCA+IHk7IC8vIDEgaWYgeCA+IHksIDAgb3RoZXJ3aXNlCiB9Cgogdm9pZCBzd2FwKGludCAqeCwgaW50ICp5KQogeyAgaHVnZSsrOwogaW50IHRtcCA9ICp4OwoKICp4ID0gKnk7CiAqeSA9IHRtcDsKIH0KCiBpbnQgbWFpbih2b2lkKQogewogaW50IGFbXSA9IHszLCAxLCA0LCAxLCA1LCA5LCAyLCA2LCA1fTsgLy8gYXJyYXkgdG8gYmUgc29ydGVkCiBzaXplX3QgbiA9IHNpemVvZiBhIC8gc2l6ZW9mIGFbMF07IC8vIG51bWJlciBvZiBlbGVtZW50cwoKIGludCBzdGF0aWMgY291bnQ9MDsKIAogZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuIC0gMTsgKytpKSB7CiBpbnQgY291bnQ9MDsKZm9yIChzaXplX3QgaiA9IDA7IGogPCBuIC0gMSAtIGk7ICsraikgewogaWYgKGNtcCggYVtqXSAsICBhW2orMV0gKSkgewpzd2FwKCAmYVsgaiBdICwgJmFbIGorMSBdICk7CmNvdW50Kys7CiB9CiB9CmlmIChjb3VudD09MCl7CiBicmVhazsKIH0KfQoKIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CiBwcmludGYoIiVkICIsIGFbaV0pOwogfQogcHJpbnRmKCJcbiIpOwogCiBwcmludGYoInN3YXDplqLmlbDjga8lZOWbnuWRvOOBs+WHuuOBleOCjOOCiyIsaHVnZSk7CiByZXR1cm4gMDsKIH0=