实现堆

Posted sungnox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现堆相关的知识,希望对你有一定的参考价值。

 1 /*实现堆*/
 2 #include<iostream>
 3 #include<algorithm>
 4 void down(int* A, int node, int end);
 5 void HEAP(int* A, int end);
 6 using namespace std;
 7 void show(int t){cout << t << " ";}
 8 void main(){
 9 
10     int A[] = {4,3,6,5,7,1};
11     int end = 5;
12     HEAP(A, end);
13     for_each(A, A+6, show);
14     cout << endl;
15 
16     system("pause");
17 }
18 
19 /*向下调整*/
20 void down(int* A, int node, int end){
21     int c, l;
22     c = node;
23     l = 2*c+1;
24     for(; l < end; c = l,l = 2*l+1)
25     {
26         int temp = A[c];
27         if(A[l] < A[l+1] )
28             ++l;
29         if(A[c] <= A[l])
30         {
31             A[c] = A[l];
32             A[l] = temp;
33         }    
34     }    
35 }
36 
37 /*建堆*/
38 void HEAP(int* A, int end)
39 {
40     int node = (end-1)/2;
41     for(int i = node; i >=0; --i)
42     {
43         cout << node << "---";
44         for_each(A, A+6, show);
45         cout << endl;
46         down(A, i, end);
47     }
48 }

 

以上是关于实现堆的主要内容,如果未能解决你的问题,请参考以下文章

你可以在graphql服务器模式文件中使用片段吗

算法排序之堆排序

在 recyclerview 片段中实现上下文操作模式的问题

代码片段 - Golang 实现集合操作

代码片段 - Golang 实现简单的 Web 服务器

ASP.net MVC 代码片段问题中的 Jqgrid 实现