问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构 堆排序问题,高手请进

发布网友 发布时间:2022-04-29 22:08

我来回答

4个回答

热心网友 时间:2022-05-22 02:42

又有注释又调试通过的程序,多好!以下部分已经在win-tc和Dev-c++下调试通过。
void Heapify(int s,int m) /*这就是你所需要的部分*/
{
int j,temp; /*对R[1..n]进行堆调整,用temp做暂存单元 */
temp=R[s];
j=2*s;
while (j<=m)
{
if (R[j]>R[j+1]&&j<m) j++;
if (temp<R[j]) break;
R[s]=R[j];
s=j;
j=j*2;
}
R[s]=temp;
}

void BuildHeap(int n)
{ /* 由一个无序的序列建成一个堆 */
int i;
for(i=n/2;i>0;i--)
Heapify(i,n);
}
原题和你这题都是大根堆。
如果是小根堆,只要将程序中的大于号相应改为小于号即可:
if (R[j]<R[j+1]&&j<m) j++;
if (temp>R[j]) break;

参考资料:具体请参阅:http://zhidao.baidu.com/question/80787783.html

热心网友 时间:2022-05-22 04:00

从最后一个有孩子节点的元素开始到第一个元素为止
1:筛选62得序列(46,25,78,29,12,37,70,62)
2:筛选78得序列(46,25,37,29,12,78,70,62)
3:筛选25得序列(46,12,37,29,25,78,70,62)
4:筛选46得序列(12,25,37,29,46,78,70,62)分两步

热心网友 时间:2022-05-22 05:35

代码
/*小根树*/#include<iostream>
using namespace std;
int a[10000];
int n;
void check(int i)
{
int min;
if(2*i<n)
{
if(n%2==0&&i==n/2)
min=2*i;
else
min=a[2*i]<a[2*i+1]?2*i:2*i+1;
if(a[i]>a[min])
{
a[0]=a[i];
a[i]=a[min];
a[min]=a[0];
check(min);
}
}
}
void bheap()
{
for(int i=n/2/*最后一个有子的节点*/;i>0;i--)
check(i);/*最多N次*/
}
int main()
{
cin>>n;
int i;
for(i=1;i<=n;i++)
cin>>a[i];
bheap();
for(i=n;i>=1;i--)
{
cout<<a[1]<<endl;
a[1]=a[n];
check(1);
n--;
}
system("pause");
return 0;
}

热心网友 时间:2022-05-22 07:26

又有注释又调试通过的程序,多好!以下部分已经在win-tc和Dev-c++下调试通过。
void
Heapify(int
s,int
m)
/*这就是你所需要的部分*/
{
int
j,temp;
/*对R[1..n]进行堆调整,用temp做暂存单元
*/
temp=R[s];
j=2*s;
while
(j<=m)
{
if
(R[j]>R[j+1]&&j<m)
j++;
if
(temp<R[j])
break;
R[s]=R[j];
s=j;
j=j*2;
}
R[s]=temp;
}
void
BuildHeap(int
n)
{
/*
由一个无序的序列建成一个堆
*/
int
i;
for(i=n/2;i>0;i--)
Heapify(i,n);
}
原题和你这题都是大根堆。
如果是小根堆,只要将程序中的大于号相应改为小于号即可:
if
(R[j]<R[j+1]&&j<m)
j++;
if
(temp>R[j])
break;
数据结构习题请高手帮忙?

起始(64),(56,23,89,10,75)第一趟 (56,64),(23,89,10,75)第二趟 (23,56,64),(89,10,75)第三趟 (23,56,64,89),(10,75)第四趟 (10,23,56,64,89),(75)第五趟 (10,23,56,64,75,89)2. 冒泡排序 起始(50,38,77,26,45,69)第一趟(38,5...

数据结构高手进,帮忙答下题

一、1、B 2、B 3、 ?4、C 《 A的深度为1,B的深度为3,D的深度为3》5、C 6、B?7、C 8、B 直接插入排序 :n个不同的数据元素,最多需要比较n*(n-1)/2 9、C 10、A 二、1.线性结构 ,非线性结构 。2. 352 &lt; 100+ (6*20+6)*2 &gt; , 232 ...

我遇到一些数据结构的问题,请高手帮忙给解答,跪谢!!!

1, t-&gt;next = p-&gt;next 2, p=head 3, n-k 4,1

关于数据结构的问题,用C语言描述

在不少数据结构的教材中,是把查找与排序放入高级数据结构中的。应该说,查找和排序两章是前面我们所学的知识的综合运用,用到了树、也用到了链表等知识,对这些数据结构某一方面的运用就构成了查找和排序。现实生活中,search几乎无处不在,特别是现在的网络时代,万事离不开search,小到文档内文字的搜索,大到INTERNET上...

请excel高手请进回答一下这个简单的问题(200分)

刚好前几天帮朋友解决了这么个问题.解决思路是这样的,首先Excel中用VB编程不方便也不实用.所以绕路前进.首先在Excel中对表进行按第一列排序.然后输出成为csv文件,我编了个小程序处理这个文件.你把CSV文件命名为"tel.csv"然后和我的程序放在一起,运行一次程序,然后将生成的"telnew.csv"导入Excel随意咯...

高中数学高手请帮帮忙啊排列组合问题

先从6个班里选出两个班A、B,共有C(6,2)=6*5/2=15种;再从4名学生中选择2个进入A班,自然剩下两个就进入B班,共有C(4,2)=4*3/2=6种;所以一共有15*6=90中方案。

word文件域排序的问题,高手请进.

1.先检查你的“第一节”是不是word的自动编号,必须是自动编号,才能自动按序号增长;2.在确认是自动编号的情况下,如果仍然全部都是“第一节”,那就选中第一个“第一节”,点击工具栏上的“格式刷”图标,然后把其他几个“第一节”用格式刷都刷一遍,就会自动变成“第二节”、“第三节”、…...

求C++完整代码,高手请进,成功运行还有加分

void heapsort()//堆排序 O(nlgn){ build();int i;for(i=len;i&gt;=2;i--){ int tmp=a[i];a[i]=a[1];a[1]=tmp;size--;maxheapify(1);} }//heapsort之后,size为1;void max_heap_insert(int key)//插入值为key的元素 { size++;a[size]=key;heap_change_key(...

大话数据结构的作品目录

1.3数据结构起源 41.4基本概念和术语 5正所谓“巧妇难为无米之炊”,再强大的计算机,也要有“米”下锅才可以干活,否则就是一堆破铜烂铁。这个“米”就是数据。1.4.1数据 51.4.2数据元素 51.4.3数据项 61.4.4数据对象 61.4.5数据结构 61.5逻辑结构与物理结构 71.5.1逻辑结构 71.5.2物理结构 91.6抽象...

excel随机生产区间数字后排序,急高手请进!

如图,假定随机数字在B1:B5,选A1到A5,输入公式:=SMALL(B1:B5,ROW()),按CTRL+SHIFT+ENTER键(数组公式),A1:A5得到楼主需要的结果

数据结构对一组数进行堆排序 数据结构堆排序怎么排 数据结构堆排序例题 数据结构堆排序初始堆 数据结构中堆排序 数据结构堆排序图解 数据结构中堆排序的步骤 数据结构堆排序时间复杂度 数据结构堆排序视频
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么叫做项目融资贷款 小区物业要买公众责任险,要向物业公司打报告,报告范文怎么写_百度知 ... ...证被亲戚拿去做银行抵押贷款了,当初我签字担保人,现在怎么处理_百度... ...现在他一直没还款银行要起诉他了,他有房产证等他能用房子抵压吗... 破坏小区围墙进入小区偷盗公众责任险要赔付吗 2023-08-05 如何基于 uni-push2.0 实现全平台推送 ...叫我拿房产证复印件去银行帮他做担保人,然后还说每个月给我二干四... 洗脸扑会过期吗 2023-08-15 如何在 uni-app 中检测 APP 端是否有通知权限 减肥期间怎么饮食饿了怎么办 三楼的wiFi信号收不到一楼的信号怎么办? 数据结构问题,急 高中英语必修一人教版第四单元译文 堆排序适用于什么结构 请问堆是非线性数据结构吗?为什么? 急需:高中英语必修一第四单元单词的大部分用法、谢谢! vivos1蓝牙耳机一个声音大一个声音太小为什么同样耳机别的手机正常? 手机耳机听歌怎么左边声音大右边声音小? 手机耳机一只声音小了 消防箱怎么分左右开门的图片 如何从消防图纸上看消防箱是左开门? 可以去银行直接办信用卡吗 梦见前妻吃馒头夹芥菜吃什么意思? 消防箱平面图怎么看? 网上申请信用卡不成功能直接到银行办理吗 消防栓里水袋怎样摆放有标准吗 怎么查自己交的个人所得税 消防箱里面的喷枪怎么放 消防箱里边的水袋怎么挂的图片 消防栓里面的带子怎么挂、图 在建筑物内部,为什么三楼的WIFI信号能在一楼接收,而一楼的WiFi信号在高楼接收较差,急,望大神 人教版高一英语必修一unit4句子翻译 数据结构的问题 我哥在一楼,我住三楼,搜不到他的无线网,怎么能把他的网线分一条给我 想请问大家,路由器在3楼,一楼几乎搜不到信号,有没有好的解决方法? 一楼收不到三楼的wifi信号,要怎么桥接 数据结构学习方法 我的路由器装在三楼, 为什么我在一楼收不到WIFI信号???、、 谷歌的roe三因素分析 请问三楼有wifi一楼没有,怎么办 我家是三层楼的大房子,无线wifi又在一楼!三楼没有Wifi信息,有什么好的方案解决呢!有点推荐 家里有三楼,一楼装的宽带路由器,有设置无线网,二楼勉强能收到无线网,但是三楼就完全收不到,怎么在三 惠普laserjetM1136MFP的打印机 可以扫描文件吗? 要装什么相应软件吗?求科普.. - 信息提示 古代的大钱是等于多少铜钱? 10万贯在古代是多少钱?能值多少人民币? 请问武汉市江汉区姑嫂树 民房拆迁补尝价格应该是多少! 武汉市2009年土地市场全部招标拍卖挂牌的信息 武汉现在哪里买房好 武汉江汉区环保局八古新墩70号什么时候拆迁