#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
for (size_t i = 0; i < n - 1; ++i) {
int count = 0; // 周の最初に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++; // 入れ替えたら+1
}
}
if (count == 0) { // 入れ替え0回なら整列完了
break;
}
}
for (size_t i = 0; i < n; ++i) {
}
return 0;
}
/*
①21行目の下にint count =0;
②if (cmp( ? , ? )) {swap( ? , ? );}の{}中にcount++;
③26行目の下にif (count == 0){break;}
なお、今回においてはcountで数える必要がないため、++count;の行はcount =1;;に置き換え、ON/OFF判定にすることも可能である。
*/
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgY21wKGludCB4LCBpbnQgeSkgICAgLy8gY29tcGFyZSB4IGFuZCB5CnsKICAgIHJldHVybiB4ID4geTsgICAvLyAxIGlmIHggPiB5LCAwIG90aGVyd2lzZQp9Cgp2b2lkIHN3YXAoaW50ICp4LCBpbnQgKnkpCnsKICAgIGludCB0bXAgPSAqeDsKCiAgICAqeCA9ICp5OwogICAgKnkgPSB0bXA7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIGludCBhW10gPSB7MywgMSwgNCwgMSwgNSwgOSwgMiwgNiwgNX07ICAgLy8gYXJyYXkgdG8gYmUgc29ydGVkCiAgICBzaXplX3QgbiA9IHNpemVvZiBhIC8gc2l6ZW9mIGFbMF07ICAgICAgIC8vIG51bWJlciBvZiBlbGVtZW50cwoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbiAtIDE7ICsraSkgewogICAgICAgIGludCBjb3VudCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAvLyDlkajjga7mnIDliJ3jgasw44G45oi744GZCiAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBuIC0gMSAtIGk7ICsraikgewogICAgICAgICAgICBpZiAoY21wKGFbal0sIGFbaisxXSkpIHsKICAgICAgICAgICAgICAgIHN3YXAoICZhW2pdICwgJmFbaisxXSApOwogICAgICAgICAgICAgICAgY291bnQrKzsgICAgICAgICAgICAgICAgICAgICAvLyDlhaXjgozmm7/jgYjjgZ/jgokrMQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChjb3VudCA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAvLyDlhaXjgozmm7/jgYgw5Zue44Gq44KJ5pW05YiX5a6M5LqGCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIHByaW50ZigiJWQgIiwgYVtpXSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7CgogICAgcmV0dXJuIDA7Cn0KCi8qCuKRoDIx6KGM55uu44Gu5LiL44GraW50IGNvdW50ID0wOwrikaFpZiAoY21wKCA/ICwgPyApKSB7c3dhcCggPyAsID8gKTt944Gue33kuK3jgatjb3VudCsrOwrikaIyNuihjOebruOBruS4i+OBq2lmIChjb3VudCA9PSAwKXticmVhazt9CuOBquOBiuOAgeS7iuWbnuOBq+OBiuOBhOOBpuOBr2NvdW5044Gn5pWw44GI44KL5b+F6KaB44GM44Gq44GE44Gf44KB44CBKytjb3VudDvjga7ooYzjga9jb3VudCA9MTvvvJvjgavnva7jgY3mj5vjgYjjgIFPTi9PRkbliKTlrprjgavjgZnjgovjgZPjgajjgoLlj6/og73jgafjgYLjgovjgIIKKi8=