Guest User

Untitled

a guest
Oct 16th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. class MaxBinaryHeap{
  2. constructor(){
  3. this.values=[41,39,33,18,27,12] }
  4.  
  5. insert(val){
  6. this.values.push(val);
  7. this.bubbleUp();
  8. return this.values;
  9. }
  10.  
  11. bubbleUp(){
  12.  
  13. let lastItemIndex = this.values.length-1;
  14.  
  15. while(lastItemIndex>0){
  16. let parentIndex = Math.floor((lastItemIndex-1)/2);
  17. if(this.values[lastItemIndex]>this.values[parentIndex]){
  18. let temp = this.values[parentIndex];
  19. this.values[parentIndex]=this.values[lastItemIndex];
  20. this.values[lastItemIndex]=temp;
  21. }
  22. lastItemIndex = parentIndex;
  23. }
  24.  
  25.  
  26. }
  27.  
  28. extractMax(){
  29. if(this.values.length<1){return undefined}
  30. let max = this.values[0];
  31. let temp = this.values[this.values.length-1];
  32. this.values[0]= temp;
  33. let waste = this.values.pop();
  34.  
  35. let targetIndex =0 ;
  36. while(targetIndex<this.values.length-1){
  37.  
  38. let childIndex_1 = 2*targetIndex+1;
  39. let childValue_1 = this.values[childIndex_1];
  40. let childIndex_2 = 2*targetIndex+2;
  41. let childValue_2 = this.values[childIndex_2];
  42. let biggerOne = (this.values[childIndex_1]>this.values[childIndex_2])?childIndex_1:childIndex_2;
  43. /*console.log(`
  44. Dizi : ${this.values}
  45. Target Index: ${targetIndex} (Değer: ${this.values[targetIndex]})
  46. Child indexler: ${childIndex_1} ve ${childIndex_2}
  47. Büyük index Index: ${biggerOne} (Değer: ${this.values[biggerOne]})
  48. ------------------
  49. `);
  50. */
  51. //--
  52. if(this.values[biggerOne]>this.values[targetIndex]){
  53. let temp = this.values[targetIndex];
  54. this.values[targetIndex] = this.values[biggerOne];
  55. this.values[biggerOne] = temp;
  56. }else{break;}
  57.  
  58. targetIndex = biggerOne;
  59.  
  60. }
  61. return max;
  62. }
  63.  
  64.  
  65. }
  66.  
  67.  
  68. let newMBH = new MaxBinaryHeap();
  69. console.log(newMBH)
  70.  
  71. newMBH.extractMax();
  72. newMBH.extractMax();
  73. newMBH.extractMax();
  74. newMBH.extractMax();
  75. newMBH.extractMax();
  76. newMBH.extractMax();
  77. newMBH.extractMax();
  78. //newMBH.insert(55);
  79. //newMBH.insert(1);
Add Comment
Please, Sign In to add comment