fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void insert(int i, int a[], int n);
  5. int deletemin(int a[], int n, int m);
  6.  
  7. int main(void) {
  8. int a[10] = {91, 63, 71, 14, 60, 1, 24, 13, 80, 15};
  9. int m[10];
  10. int i, j;
  11. int n = 10;
  12.  
  13. for (i = (n - 2) / 2; i >= 0; i--) {
  14. insert(i, a, n - 1);
  15. }
  16.  
  17. for (i = n - 1; i >= 0; i--) {
  18. m[9 - i] = deletemin(a, i, i - 1);
  19. }
  20.  
  21. for (j = 0; j < 10; j++) {
  22. printf("%3d", m[j]);
  23. }
  24.  
  25. return 0;
  26. }
  27.  
  28. void insert(int i, int a[], int n) {
  29. int j;
  30. int temp;
  31.  
  32. while (2 * i + 1 <= n) {
  33. j = 2 * i + 1;
  34.  
  35. if (j < n) {
  36. if (a[j] > a[j + 1]) {
  37. j++;
  38. }
  39. }
  40.  
  41. if (a[i] <= a[j]) {
  42. break;
  43. }
  44.  
  45. temp = a[j];
  46. a[j] = a[i];
  47. a[i] = temp;
  48.  
  49. i = j;
  50. }
  51. }
  52.  
  53. int deletemin(int a[], int n, int m) {
  54. int b;
  55. int temp;
  56. int i, j;
  57.  
  58. b = a[0];
  59. a[0] = a[n];
  60. i = 0;
  61.  
  62. while (2 * i + 1 <= m) {
  63. j = 2 * i + 1;
  64.  
  65. if (j < m) {
  66. if (a[j] > a[j + 1]) {
  67. j++;
  68. }
  69. }
  70.  
  71. if (a[i] <= a[j]) {
  72. break;
  73. }
  74.  
  75. temp = a[i];
  76. a[i] = a[j];
  77. a[j] = temp;
  78.  
  79. i = j;
  80. }
  81.  
  82. return b;
  83. }
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
  1 13 14 15 24 60 63 71 80 91