//优先队列的插入与删除操作
来源:互联网 发布:免费手机视频制作软件 编辑:程序博客网 时间:2024/06/11 19:33
//优先队列的插入与删除操作
#include<iostream>
using namespace std;
const int maxsize=100;
int a[maxsize];
void siftup(int v,int n)
{
if(n>=maxsize)
{
cout<<"error"<<endl;
return;
}
a[++n]=v;
for(int i=n;(i>1)&&(a[i/2]>a[i]);i/=2)
swap(a[i/2],a[i]);
}
int siftdown(int n)
{
if(n<1)
{
cout<<"error data"<<endl;
return 0;
}
int t=a[1];
a[1]=18;
int i,c;
for(i=1;(c=2*i)<=n;i=c)
{
if(c+1<=n&&a[c+1]<a[c])
c++;//这里判断具体是哪个数大点
if(a[i]<a[c])
break;
swap(a[i],a[c]);
}
return t;
}
int main(void)
{
int n;
cin>>n;
int val;
//输入一个具有堆性质的数组
for(int i=1;i<=n;i++)
{
cin>>val;
a[i]=val;
}
//for(int i=0;i<maxsize;i++)
// cout<<a[i]<<endl;
//*****插入一个元素
cin>>val;
siftup(val,n);//这里插入元素
for(int i=0;i<maxsize;i++)
cout<<a[i]<<" ";
cout<<endl;
int shanchu=siftdown(n);//删除一个堆性质数组的最小元素后还呈堆性质
cout<<"delete the element"<<shanchu<<endl;
for(int i=0;i<maxsize;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
#include<iostream>
using namespace std;
const int maxsize=100;
int a[maxsize];
void siftup(int v,int n)
{
if(n>=maxsize)
{
cout<<"error"<<endl;
return;
}
a[++n]=v;
for(int i=n;(i>1)&&(a[i/2]>a[i]);i/=2)
swap(a[i/2],a[i]);
}
int siftdown(int n)
{
if(n<1)
{
cout<<"error data"<<endl;
return 0;
}
int t=a[1];
a[1]=18;
int i,c;
for(i=1;(c=2*i)<=n;i=c)
{
if(c+1<=n&&a[c+1]<a[c])
c++;//这里判断具体是哪个数大点
if(a[i]<a[c])
break;
swap(a[i],a[c]);
}
return t;
}
int main(void)
{
int n;
cin>>n;
int val;
//输入一个具有堆性质的数组
for(int i=1;i<=n;i++)
{
cin>>val;
a[i]=val;
}
//for(int i=0;i<maxsize;i++)
// cout<<a[i]<<endl;
//*****插入一个元素
cin>>val;
siftup(val,n);//这里插入元素
for(int i=0;i<maxsize;i++)
cout<<a[i]<<" ";
cout<<endl;
int shanchu=siftdown(n);//删除一个堆性质数组的最小元素后还呈堆性质
cout<<"delete the element"<<shanchu<<endl;
for(int i=0;i<maxsize;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
0 0
- //优先队列的插入与删除操作
- 优先队列的初始化,删除,插入操作
- 利用顺序表实现优先队列的插入和删除操作
- 优先队列、链表数组二叉搜索树的插入删除操作
- 优先队列即堆:插入算法与删除算法JAVA
- 【算法设计-优先队列】优先队列的实现与操作
- 队列的 插入 删除 添加操作
- 双向队列元素的插入与删除
- 双向队列元素的插入与删除
- 优先队列的操作
- 斐波那契堆 插入、 Extract-Min(查找+删除)效率与 STL优先队列对比
- 队列的存储结构,判空、插入、删除操作
- AVL树的插入与删除操作
- c++字符串的插入与删除操作
- 锦标赛程序的优先队列的插入
- 循环队列 + 插入 + 删除 + 遍历等操作
- 锦标赛程序的优先队列的删除
- 栈、队列与优先队列的认识
- Struts2的工作流程浅析
- Java设计原则
- WSAD的设置Workspace对话框重新出现
- hdu5057 树状数组
- UVA 297 - Quadtrees
- //优先队列的插入与删除操作
- 手势图片
- nginx 配置伪静态
- js中几种实用的跨域方法原理详解
- ftp、sftp常用命令
- 获得树形json串
- 购物节来啦!!!!!!!!!!!
- 【android】进程优先级(Framework设置优先级,LowMemoryKiller查杀)
- ApiDemos – BouncingBalls分析