zoukankan      html  css  js  c++  java
  • 创建大顶堆

    /*-----建造最大堆------*/ 
    // 创建堆
    function CreateHeap(MaxSize,MaxData,initialData) {
        this.MaxSize = MaxSize;
        this.Heap = initialData;
        if(!initialData) {
            this.Heap = new Array();   // 可以传入自定义数组 生成大顶堆
            this.Heap[0] = MaxData   // 定义" 哨兵 " 为大于堆中所有可能元素的值
        }
        this.BuildHeap = CreateHeap.BuildHeap
        this.PercDown = CreateHeap.PercDown
    }
    CreateHeap.PercDown = function(num) {
         let parent, child, element;
         element = this.Heap[num];
         for(parent=num; parent*2 + 1 <= this.Heap.length-1; parent=child) {
             child = parent*2 + 1;
             if((child != this.Heap.length-1) && (this.Heap[child] < this.Heap[child+1])) {
                 child++
             }
             if(element > this.Heap[child]) {
                 break;
             } else {
                 this.Heap[parent] = this.Heap[child]
             }
         }
         this.Heap[parent] = element;
         console.log(this.Heap);
    
    }
    CreateHeap.BuildHeap = function() {
        let len = this.Heap.length - 2;   // 由于有 0 存在 ,所以减去2 来找到父节点
        for(let i=Math.floor(len / 2); i>=0; i--) {
            this.PercDown(i);
        }
    }
    
    
    
    let arr = [14,16,15,8,11,18,13]
    
    let heap = new CreateHeap(8,1000,arr);
    heap.BuildHeap()
    console.log(heap.Heap);
  • 相关阅读:
    虚拟化与KVM部署
    Jenkins部署及使用
    Tomcat及LAMT架构搭建
    版本控制与Gitlab配置
    Cobbler介绍及搭载
    MYSQL集群配置
    HAProxy——配置与实例
    LVS——配置实例
    Linux——集群
    关于IntellIJ IDEA 2016.2.4新建项目的Java Enterprise没有显示问题
  • 原文地址:https://www.cnblogs.com/strivegys/p/13215831.html
Copyright © 2011-2022 走看看