fork download
  1. #include <stdio.h>
  2.  
  3. void insertionSortBySumOfDigits(int arr[], int n) {
  4. int t, key, j, i = 0;
  5. while (i < n && (arr[i]&1)==0)
  6. i++;
  7. if (i==n)
  8. return;
  9. i++;
  10. while (i < n) {
  11. while (i < n && (arr[i]&1)==0)
  12. i++;
  13. if (i==n)
  14. break;
  15. key = arr[i];
  16. t = i;
  17. j = i - 1;
  18. while (j >=0) {
  19. while (j>=0 && (arr[j]&1)==0)
  20. j--;
  21. if (j < 0 || arr[j]<= key)
  22. break;
  23. arr[t] = arr[j];
  24. t = j;
  25. j--;
  26. }
  27. arr[t] = key;
  28. i++;
  29. }
  30. }
  31.  
  32. int main() {
  33. const int size = 10;
  34. int arr[10] = {8,7,3,6,5,4,5,2,6,1};
  35.  
  36. for (int i = 0; i < size; ++i)
  37. printf("%d ", arr[i]);
  38.  
  39. insertionSortBySumOfDigits(arr, size);
  40. printf("\n");
  41.  
  42. for (int i = 0; i < size; ++i)
  43. printf("%d ", arr[i]);
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
8 7 3 6 5 4 5 2 6 1 
8 1 3 6 5 4 5 2 6 7