二叉堆【小顶堆】数组模板+C++STL

2021-04-09 04:25

阅读:433

标签:else   ios   return   string   oid   break   cst   while   extract   


  1 #include   2 #include 
  3 #include   4 #include   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]  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  33 		if(heap[s] > heap[s+1] && s  34 		if(heap[s]  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  53 	    int a;
 54 	    cin >> a;
 55 	    Insert(a);
 56 	}
 57 	return 0;
 58 }



  1 priority_queueint, vectorint>, greaterint>> heap;


二叉堆【小顶堆】数组模板+C++STL

标签:else   ios   return   string   oid   break   cst   while   extract   

原文地址:https://www.cnblogs.com/rstz/p/13376134.html


评论


亲,登录后才可以留言!