Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <math.h>
  4. using namespace std;
  5. template <class T> class MinHeap{
  6. private:
  7. int heapsize,len;
  8. T **A;
  9. public:
  10. MinHeap(int x){
  11. heapsize=0;
  12. len=x+1;
  13. A=new T*[len];
  14. }
  15. MinHeap(T V[], int x){
  16. heapsize=x;
  17. len=heapsize+1;
  18. A = new T*[len];
  19. for(int i=1;i<=heapsize;i++){
  20. A[i]=new T(V[i-1]);
  21. }
  22. }
  23. void swap(int a,int b){
  24. T*tmp=A[a];
  25. A[a]=A[b];
  26. A[b]=tmp;
  27. }
  28. void heapify(int i){
  29. if(i>heapsize) return;
  30.  
  31. int sx=2*i;
  32. int dx=2*i+1;
  33. int v=i;
  34. if(sx<=heapsize && *A[sx]<*A[i]) v=sx;
  35. if(dx<=heapsize && *A[dx]<*A[v]) v=dx;
  36. if(v==i) return;
  37. swap(v,i);
  38. heapify(v);
  39. }
  40.  
  41. void BuildHeap(){
  42. for(int i=heapsize/2;i>0;i--) heapify(i);
  43. }
  44. void print(){
  45. for (int i=1;i<=heapsize;i++){
  46. cout<<*A[i]<<" ";
  47. }
  48. }
  49. void sort(){
  50. int n=heapsize;
  51. for(int i=0;i<=heapsize;i++) extract();
  52. heapsize=n;
  53. }
  54. void extract(){
  55. if(heapsize==0) return;
  56. swap(1,heapsize);
  57. heapsize--;
  58. heapify(1);
  59. }
  60. void ins(T x){
  61. if(heapsize==len-1) {
  62. cout<<"Pieno\n";
  63. return;
  64. }
  65. heapsize++;
  66. A[heapsize]= new T (x);
  67. int i=heapsize;
  68. while(i>1 && *A[i]<*A[i/2]){
  69. swap(i/2,i);
  70. i=i/2;
  71. }
  72. }
  73.  
  74. };
  75. int main(){
  76.  
  77. // int v[]={3,1,5,0};
  78. MinHeap<int>*M=new MinHeap<int>(4);
  79. M->ins(3);
  80. M->ins(1);
  81. M->ins(5);
  82. M->ins(0);
  83. //M->sort();
  84. M->print();
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement