Advertisement
Guest User

Untitled

a guest
Jun 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. void kopiec_przywroc(int *A, int heap_size,int i);
  6. void kopiec_buduj(int *A, int heap_size);
  7. void sort_kopcowanie(int *TAB,int heap_size);
  8. void sort_zliczanie(int *TAB,int length);
  9. void tab_wyswietl(int *A, int length);
  10. int maksimum(int *TAB,int length);
  11. int minimum(int *TAB,int length);
  12.  
  13. int right(int i);
  14. int left(int i);
  15.  
  16. main()
  17. {
  18. int i=0,a,b;
  19. int length, heap_size;
  20. int *A=NULL;
  21.  
  22. printf("Podaj dlugosc tablicy: ");
  23. scanf("%d",&length);
  24. printf("Podaj liczbe elementow kopca: ");
  25. scanf("%d",&heap_size);
  26. A=malloc(length*sizeof(int));
  27. for(i=0;i<heap_size;i++)
  28. {
  29. fflush(stdin);
  30. printf("%d. ", i+1);
  31. scanf("%d", &A[i]);
  32. }
  33.  
  34. //sort_kopcowanie(A,heap_size);
  35. tab_wyswietl(A,length);
  36.  
  37. }
  38.  
  39.  
  40. void kopiec_przywroc(int *A, int heap_size, int n)
  41. {
  42. int l;
  43. int r;
  44. int maks, tmp;
  45. l=left(n);
  46. r=right(n);
  47. if(l<heap_size && A[l]>A[n])
  48. maks=l;
  49. else
  50. maks=n;
  51. if(r<heap_size && A[r]>A[maks])
  52. maks=r;
  53. if(maks!=n)
  54. {
  55. tmp=A[maks];
  56. A[maks]=A[n];
  57. A[n]=tmp;
  58. kopiec_przywroc(A,heap_size,maks);
  59. }
  60. }
  61.  
  62. void kopiec_buduj(int *A, int heap_size)
  63. {
  64. int i=heap_size/2;
  65. for(i;i>=0;i--)
  66. {
  67. kopiec_przywroc(A,heap_size,i);
  68. }
  69. }
  70.  
  71.  
  72. void tab_wyswietl(int *A, int length)
  73. {
  74. int i;
  75. for(i=0;i<length;i++) printf("%d: %d\n",i,A[i]);
  76. }
  77. int right(int i)
  78. {
  79. return 2*i+2;
  80. }
  81.  
  82. int left(int i)
  83. {
  84. return 2*i+1;
  85. }
  86.  
  87. int parent(int i)
  88. {
  89. return (i-1)/2;
  90. }
  91.  
  92. //Sortowania
  93. void sort_kopcowanie(int *TAB,int heap_size)
  94. {
  95.  
  96. int i,temp;
  97. kopiec_buduj(TAB,heap_size);
  98. for(i=heap_size-1;i>0;i--)
  99. {
  100. temp=TAB[0];
  101. TAB[0]=TAB[i];
  102. TAB[i]=temp;
  103. heap_size--;
  104. kopiec_przywroc(TAB,heap_size,0);
  105. }
  106.  
  107. }
  108.  
  109. int maksimum(int *TAB,int length)
  110. {
  111.  
  112. int maks=TAB[0],i;
  113. for(i=1;i<length;i++)
  114. {
  115. if(TAB[i]>maks) maks=TAB[i];
  116. }
  117. return maks;
  118. }
  119. int minimum(int *TAB,int length)
  120. {
  121.  
  122. int min1=TAB[0],i;
  123. for(i=1;i<length;i++)
  124. {
  125. if(TAB[i]<min1) min1=TAB[i];
  126. }
  127. return min1;
  128. }
  129.  
  130. void sort_zliczanie(int *TAB,int length)
  131. {
  132. int k=maksimum(A,length),i;
  133. for i
  134.  
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement