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