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