文档章节

优先队列插入、删除

o
 osc_fmg49rzg
发布于 2019/03/20 11:21
字数 283
阅读 15
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 1 #include<stdio.h>
 2 #include<malloc.h>
 3 void shift_down(int a[], int low, int high)
 4 {
 5     int i = low, j = i*2;
 6     int tmp = a[i];
 7     while(j <= high){
 8         if(j < high && a[j] < a[j+1])
 9             j++;
10         if(tmp < a[j]){
11             a[i] = a[j];
12             i = j;
13             j = i*2;
14         }
15         else break;
16     }
17     a[i] = tmp;
18 } 
19 void shift_up(int a[], int low, int high)
20 {
21     int i = high/2, j = high;
22     int tmp = a[high];
23     while(i >= 1){
24         if(a[i] < tmp){
25             a[j] = a[i];
26             j = i;
27             i = j/2;
28         }
29         else break;
30     }
31     a[j] = tmp;
32 }
33 void print(int a[], int n)
34 {
35     int i;
36     for(i = 1; i <= n; i++){
37         printf("%d ", a[i]);
38     }
39     printf("\n");
40 }
41 int main()
42 {
43     int n, i, a[110];
44     scanf("%d", &n);
45     for(i = 1; i <= n; i++){
46         scanf("%d", &a[i]);
47     }
48     for(i = n/2; i >= 1; i--){
49         shift_down(a, i, n);
50     } //建立大顶堆 
51     print(a, n);
52     
53     printf("删除大顶堆顶:"); 
54     a[1] = a[n];//删除当前最大元素 
55     n--; 
56     shift_down(a, 1, n);
57     print(a, n); 
58     
59     printf("插入一个值:"); 
60     n++;
61     scanf("%d", &a[n]);
62     shift_up(a, 1, n);
63     print(a, n);
64     return 0;
65 } 
66 /*10
67 6 8 7 9 0 1 3 2 4 5*/

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

以太坊智能合约开发常见的10个安全问题

本文介绍CheckMarx安全研究小组通过扫描公开的以太坊智能合约所发现的Solidity智能合约开发中常见的十大安全问题,其中__未检查的外部调用__ 和 高成本循环 分列排行榜前两名。该安全问题排行...

区块链教程
40分钟前
15
0
Android Studio写flutter快捷键

1.stl :代表StatelessWidget 2.stf :StatefulWidget 3.cmd + shift + 减号 :折叠所有代码 4.cmd + 减号 :折叠当前代码块 5.ctrl + r :编译运行 6.cmd + s :hot reload 7.cmd + { :回到...

一代码农码一代
53分钟前
21
0
远程桌面如何修改登录密码

打开运行, C:\Windows\explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0} 即可 https://www.itexperience.net/10-ways-to-change-password-in-remote-desktop-session/......

ethanleellj
55分钟前
11
0
easyui的menu接收后台集合,并且根据集合利用appendItem动态生成菜单项,判断菜单项的字数大于指定长度,则多余字符以。。。显示,并且悬浮提示

JSP: <a id="bb" href="javascript:void(0);" class="easyui-menubutton" data-options="menu:'#layout_north_stMenu222',iconCls:'icon-cologne-sign-out'" >导出</a><div id="aaa" style......

文文1
57分钟前
13
0
Mysql主从同步

1主从同步 1.1Master 1.1.1配置--编辑 my.cnf #编辑 mysql 的 /etc/my.cnf 配置文件vi /etc/my.cnf#添加如下配置server-id=1 #设置服务 IDlog_bin=mysql-bin #启动 binlog...

风雪满弓刀
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部