fork download
  1. #include <stdio.h>
  2.  
  3. int cmp(int x, int y)
  4. {
  5. return x < y;
  6. }
  7.  
  8. void swap(int *x, int *y)
  9. {
  10. int tmp = *x;
  11. *x = *y;
  12. *y = tmp;
  13. }
  14.  
  15. int main(void)
  16. {
  17. int a[] = {3, 1, 4, 1, 5, 9, 2, 6, 5};
  18. size_t n = sizeof a / sizeof a[0];
  19.  
  20. int count = 0;
  21.  
  22. for (size_t i = 0; i < n - 1; ++i) {
  23. int irekae = 0;
  24.  
  25. for (size_t j = 0; j < n - 1 - i; ++j) {
  26. if (cmp(a[j], a[j + 1])) {
  27. swap(&a[j], &a[j + 1]);
  28.  
  29. irekae = 1;
  30. count++;
  31. }
  32. }
  33.  
  34. if (irekae == 0) {
  35. break;
  36. }
  37. }
  38.  
  39.  
  40. printf("swapの呼び出し回数:%d回\n", count);
  41.  
  42.  
  43. for (size_t i = 0; i < n; ++i) {
  44. printf("%d ", a[i]);
  45. }
  46. printf("\n");
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 544KB
stdin
Standard input is empty
stdout
swapの呼び出し回数:24回
9 6 5 5 4 3 2 1 1