Heap数组实现
来源:互联网 发布:立体画图软件 编辑:程序博客网 时间:2024/06/07 15:47
#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
int array[] = { 150,80,40,30,10,70,110,100,20,90,60,50,120,140,130};
typedef struct Heap{
int Capacity;
int Size;
int *Elements;
}Heap;
Heap* Initialize(int max)
{
Heap * H;
H = (Heap *)malloc(sizeof(Heap));
H->Elements = (int *)malloc(sizeof(int)*(max+1));
H->Capacity = max;
H->Size = 0;
H->Elements[0] = 0;
return H;
}
int putHeap(Heap *H,int array[], int num)
{
for(int i =0;i< num;i++)
H->Elements[i+1] = array[i];
H->Size = num;
return 0;
}
int printHeap(Heap *H)
{
for(int i = 1;i <= H->Size;i++)
printf(" %d",H->Elements[i]);
printf("\n");
return 0;
}
int PrecolateDown(Heap *H,int location)
{
int i = location,child;
int temp = H->Elements[location];
for(;i*2< H->Size; i=child)
{
child = 2*i;
if(child != H->Size&&H->Elements[child+1]<H->Elements[child])
child++;
if(temp >H->Elements[child])
H->Elements[i] = H->Elements[child];
else
break;
}
H->Elements[i] = temp;
return 0;
}
int BuildHeap(Heap *H)
{
for(int i = H->Size/2;i>0;i--)
{
PrecolateDown(H,i);
printHeap(H);
}
return 0;
}
int main(int argc, char* argv[])
{
Heap *H = Initialize(20);
putHeap(H,array,sizeof(array)/sizeof(int));
printHeap(H);
BuildHeap(H);
return 0;
}
- Heap数组实现
- 堆(heap)基于数组的实现
- 使用stl实现heap
- Heap算法实现
- Fibonacci Heap实现参考
- C++ 泛型 Heap 实现
- heap sort算法实现
- 堆的实现 Heap
- heap 实现 code
- 堆(heap)实现
- 堆(heap)的实现
- binomial heap实现
- Fibonacci Heap实现
- Heap的java实现
- STL之heap实现
- erl_tree heap 堆实现
- 基本数据结构-heap实现
- STL heap 实现
- 动态获得域名
- 在应用系统中集成文件上传下载的技术解决方案
- JAVA中extends 与 implements有啥区别?
- JDBC开发
- N97连接WIFI提示预置共享密钥无效
- Heap数组实现
- EXCEL2007中创建VBA代码
- 为什么证书和配置文件设置正确以后,xcode还是不能发现真机
- js定时循环实现秒表
- ios调用系统界面显示英文。。。
- js读取cookie,js添加cookie,js删除cookie
- Web Browser 的扩展
- Android中一个动画应用于两个View中不同步的问题
- cannot open file mfc42u.lib的问题解决