Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MaxBinaryHeap{
- constructor(){
- this.values=[41,39,33,18,27,12] }
- insert(val){
- this.values.push(val);
- this.bubbleUp();
- return this.values;
- }
- bubbleUp(){
- let lastItemIndex = this.values.length-1;
- while(lastItemIndex>0){
- let parentIndex = Math.floor((lastItemIndex-1)/2);
- if(this.values[lastItemIndex]>this.values[parentIndex]){
- let temp = this.values[parentIndex];
- this.values[parentIndex]=this.values[lastItemIndex];
- this.values[lastItemIndex]=temp;
- }
- lastItemIndex = parentIndex;
- }
- }
- extractMax(){
- if(this.values.length<1){return undefined}
- let max = this.values[0];
- let temp = this.values[this.values.length-1];
- this.values[0]= temp;
- let waste = this.values.pop();
- let targetIndex =0 ;
- while(targetIndex<this.values.length-1){
- let childIndex_1 = 2*targetIndex+1;
- let childValue_1 = this.values[childIndex_1];
- let childIndex_2 = 2*targetIndex+2;
- let childValue_2 = this.values[childIndex_2];
- let biggerOne = (this.values[childIndex_1]>this.values[childIndex_2])?childIndex_1:childIndex_2;
- /*console.log(`
- Dizi : ${this.values}
- Target Index: ${targetIndex} (Değer: ${this.values[targetIndex]})
- Child indexler: ${childIndex_1} ve ${childIndex_2}
- Büyük index Index: ${biggerOne} (Değer: ${this.values[biggerOne]})
- ------------------
- `);
- */
- //--
- if(this.values[biggerOne]>this.values[targetIndex]){
- let temp = this.values[targetIndex];
- this.values[targetIndex] = this.values[biggerOne];
- this.values[biggerOne] = temp;
- }else{break;}
- targetIndex = biggerOne;
- }
- return max;
- }
- }
- let newMBH = new MaxBinaryHeap();
- console.log(newMBH)
- newMBH.extractMax();
- newMBH.extractMax();
- newMBH.extractMax();
- newMBH.extractMax();
- newMBH.extractMax();
- newMBH.extractMax();
- newMBH.extractMax();
- //newMBH.insert(55);
- //newMBH.insert(1);
Add Comment
Please, Sign In to add comment