fork download
  1. #include <stdio.h>
  2.  
  3. int cmp(int x, int y) // compare x and y
  4. {
  5. return x > y; // 1 if x > y, 0 otherwise
  6. }
  7.  
  8. void swap(int *x, int *y)
  9. { int tmp = *x;
  10.  
  11. *x = *y;
  12. *y = tmp;
  13. }
  14.  
  15. int main(void)
  16. {
  17.  
  18. int a[] = {3, 1, 4, 1, 5, 9, 2, 6, 5}; // array to be sorted
  19. size_t n = sizeof a / sizeof a[0]; // number of elements
  20. int swap_count = 0;
  21. for (size_t i = 0; i < n - 1; ++i) {
  22. int swapped = 0;
  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. ++swap_count;
  27. swapped = 1;
  28. }
  29. }
  30. if(swapped == 0)
  31. break;
  32. }
  33.  
  34. printf("swap_count = %d\n", swap_count);
  35.  
  36. for (size_t i = 0; i < n; ++i) {
  37. printf("%d ", a[i]);
  38. }
  39. printf("\n");
  40.  
  41. return 0;
  42. }
  43.  
  44.  
  45.  
  46.  
Success #stdin #stdout 0s 5336KB
stdin
Standard input is empty
stdout
swap_count = 10
1 1 2 3 4 5 5 6 9