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