zoukankan      html  css  js  c++  java
  • 堆的类实现

    template <class T>
    class heap {
    
        vector<T>data;
    
    public:
        heap() {}
        heap(T *a,int len) {
            for (int i = 0; i < len; i++)
                data.push(a[i]);
        }
    
        T top() {
            return data.front();
        }
        //为了方便操作,索引从1开始,所以为了完全填充数组,查询时偏移一位
        void push(T x) {
            data.emplace_back(x);
            int now = data.size();
            while (now > 1) {
                if (data[now - 1] < data[(now >> 1) - 1])
                    swap(data[now - 1], data[(now >> 1) - 1]);
        
                now >>= 1;
            }
    
        }
    
        void pop() {
            data.front() = data.back();
            int len = data.size() - 1;
            int now = 2;
            while (now <=len) {
                if (data[now] < data[now - 1])now++;
                if (data[now - 1] < data[(now >> 1) - 1]) {
                    swap(data[now - 1], data[(now >> 1) - 1]);
                    now <<= 1;
                }
                else break;
    
            }
            data.pop_back();
        }
    
        int size() {
            return data.size();
        }
    };
  • 相关阅读:
    命名规则
    数据库的基本概念(三大范式,数据)
    集合的排序
    装箱拆箱
    异常处理
    单行函数
    表管理
    创建表,插入列....
    PL/SQL 块
    单行函数的案例
  • 原文地址:https://www.cnblogs.com/komet/p/14144304.html
Copyright © 2011-2022 走看看