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