最小堆的一些操作
来源:互联网 发布:数据分析师累不累 编辑:程序博客网 时间:2024/06/14 00:56
包括:建立、插入一个节点、删除其中一个节点,用最小堆排序。
#include <iostream>using namespace std;int const len=10;//建立一个最小堆int left(int i){ return 2*i+1;}int right(int i){ return 2*i+1+1;}int parent(int i){ return (i+1)/2-1;}void minheapify(int *A,int i,int heapsize){ int l=left(i),r=right(i); int smallest=i,temp=0; if (l<heapsize&&A[l]<A[i]) smallest=l; else smallest=i; if(r<heapsize&&A[r]<A[smallest]) smallest=r; if(smallest!=i) { temp=A[i]; A[i]=A[smallest]; A[smallest]=temp; minheapify(A,smallest,heapsize); }}void buildheap(int *A,int heapsize){ for(int i=len/2-1;i>=0;i--) { minheapify(A,i,heapsize); }}void heapinsert(int *A,int &heapsize,int key){ heapsize++; int i=heapsize-1; A[i]=key; int p=parent(i),temp; while(p>=0&&A[p]>A[i]) { temp=A[p]; A[p]=A[i]; A[i]=temp; i=p; p=parent(i); }}void heapdelete(int *A,int i,int &heapsize){ A[i]=A[heapsize-1]; heapsize--; minheapify(A,i,heapsize);}int main(){ int A[len]; int heapsize=0,temp; for (int i=0;i<len;i++) cin>>A[i]; //建堆 heapsize=len-2;//,可以自己设置堆的大小,此处堆的大小不等于数组的大小。 buildheap(A,heapsize); for (int i=0;i<heapsize;i++) cout<<A[i]<<' '; cout<<endl; //插入新的结点,在堆的后面加上一个新元素,然后将其浮上去。 heapinsert(A,heapsize,1); for (int i=0;i<heapsize;i++) cout<<A[i]<<' '; cout<<endl;//从中删除结点。在删除的结点处,运行minheapify,因为该结点的左右子树均为最小堆,满足运行minheapify的条件。 heapdelete(A,2,heapsize); for (int i=0;i<heapsize;i++) cout<<A[i]<<' '; cout<<endl;//最小堆排序,逆序的 for(int i=heapsize-1;i>=1;i--) { temp=A[i]; A[i]=A[0]; A[0]=temp; heapsize--; minheapify(A,0,heapsize); } for (int i=0;i<len;i++)//输出数组所有的元素。 cout<<A[i]<<' ';}
- 最小堆的一些操作
- 堆排序的一些操作
- 堆相关的一些操作
- 堆的一些简单操作
- 最大最小堆的操作以及实现
- 堆删除最小元素的操作思路
- 最小(大)堆,堆操作
- 堆排序以及二叉堆的一些操作
- 堆的操作和堆排序-最小堆实现递减排序-C++
- 最小堆操作(元素的添加和删除)
- 最小堆的实现
- 最小堆的实现
- 最小堆的实现
- 最小堆的建立
- 最小堆的插入
- 最小堆的删除
- 最小堆的建立
- C++实现最小堆及插入,调整顺序,删除堆顶元素的操作
- TCP/IP协议头部结构体
- 解决存储过程编译卡死问题
- U-Boot关键代码分析
- java程序员修炼之道
- 序列模式挖掘
- 最小堆的一些操作
- 想学习——HTML5
- 深入学习《Programing Hive》:HiveQL索引
- POJ1679The Unique MST (最小生成树之Prim )(有点坑人)
- WDM驱动笔记
- Editplus下新建Html文件的乱码问题解决
- php 防止表单重复提交
- 分词
- SharePoint 2013的100个新功能之网站管理(三)