Advertisement
Guest User

Untitled

a guest
May 27th, 2015
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int parent(int i);
  5. int right(int i);
  6. int left(int i);
  7.  
  8. void kopiec_buduj(int *A,int length, int *hp);
  9. void kopiec_przywroc(int *A,int i, int hp);
  10. int *kopiec_wstaw(int *A, int key, int *hp);
  11.  
  12.  
  13. main()
  14. {
  15. char z;
  16. while(1)
  17. {
  18. printf("\n Co chesz zrobic? ");
  19. printf("\n d - dodac ");
  20. printf("\n w - wyswietlic ");
  21. printf("\n q - wyjsc ");
  22. z=getchar();
  23. switch(z)
  24. {
  25. case 'q':
  26. return 0; break;
  27.  
  28. }
  29. }
  30. }
  31.  
  32. void kopiec_buduj(int *A,int length, int *hp)
  33. {
  34. int i;
  35. *hp = length;
  36. for(i = length/2; i>=1; i--)
  37. kopiec_przywroc(A, i, *hp);
  38. }
  39.  
  40. void kopiec_przywroc(int *A,int i, int hp)
  41. {
  42. int l, r, max,temp;
  43. l = left(i);
  44. r = right(i);
  45.  
  46. if((l <= hp)&&(A[l] > A[i]))
  47. max = l;
  48. else
  49. max = i;
  50.  
  51. if((r <= hp)&&(A[r] > A[max]))
  52. max = r;
  53. if(max != i){
  54. temp = A[i];
  55. A[i] = A[max];
  56. A[max] = temp;
  57. }
  58. kopiec_przywroc(A,i,max);
  59. }
  60.  
  61. int *kopiec_wstaw(int *A, int key,int *hp)
  62. {
  63. int i;
  64. *hp=*hp+1;
  65. i=*hp;
  66. while ((i>1) && (A[parent(i)]<key))
  67. {
  68. A[i]=A[parent(i)];
  69. i=parent(i);
  70. }
  71. A[i]=key;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement