zoukankan      html  css  js  c++  java
  • 二叉堆【小顶堆】数组模板+C++STL


      1 #include <iostream>
      2 #include <algorithm>
      3 #include <cstring>
      4 #include <vector>
      5 using namespace std;
      6 const int SIZE = 1e6;
      7 int heap[SIZE], n;
      8 
      9 
     10 void up(int p) {
     11 	while(p > 1) {
     12 
     13 		if(heap[p] < heap[p/2]) {
     14 			swap(heap[p], heap[p/2]);
     15 			p /= 2;
     16 		}
     17 		else break;
     18 	}
     19 }
     20 
     21 void Insert(int val) {
     22 	heap[++n] = val;
     23 	up(n);
     24 }
     25 
     26 int GetTop() {
     27 	return heap[1];
     28 }
     29 
     30 void down(int p) {
     31 	int s = p * 2;
     32 	while(s <= n) {
     33 		if(heap[s] > heap[s+1] && s < n) s++;
     34 		if(heap[s] < heap[p]){
     35 			swap(heap[s], heap[p]);
     36 			p = s, s = p * 2;
     37 		}
     38 		else break;
     39 	}
     40 }
     41 void ExTract() {
     42 	heap[1] = heap[n--];
     43 	down(1);
     44 }
     45 void remove(int k) {
     46 	heap[k] = heap[n--];
     47 	up(k), down(k);
     48 }
     49 int main() {
     50 	int t;
     51 	cin >> t;
     52 	for(int i = 0; i < t; ++ i) {
     53 	    int a;
     54 	    cin >> a;
     55 	    Insert(a);
     56 	}
     57 	return 0;
     58 }



      1 priority_queue<int, vector<int>, greater<int>> heap;


    追求吾之所爱
  • 相关阅读:
    Android笔记
    Scala中apply的用法
    MySQL备忘
    Spring test
    Scala
    Dubbo
    Scala元组
    Scala中None, Nil, Nothing的区别
    java多态与异常处理——动手动脑
    《大道至简》第七八章读后感
  • 原文地址:https://www.cnblogs.com/rstz/p/14391008.html
Copyright © 2011-2022 走看看