说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

C语言实现堆排序(Heap Sort)

HTML文档下载 WORD文档下载 PDF文档下载
对于大量的记录的排序来说,堆排序是一种非常有效的方法。如果排序的记录数不大,则堆排序的优越性并不明显,而且还需要一个供交换时暂存记录的辅助空间。

 

对于大量的记录的排序来说,堆排序是一种非常有效的方法。如果排序的记录数不大,则堆排序的优越性并不明显,而且还需要一个供交换时暂存记录的辅助空间。

 

堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具有更好的表现。堆排序的主要用途,是在形成和处理优先级队列方面。另外,如果计算要求是类优先级队列(比如,只要返回最大或者最小元素,只有有限的插入要求等),堆同样是很适合的数据结构。

 

 

测试代码:

 

#include <stdio.h>#define MARK 0static a[8] = {MARK,25,4,36,1,60,10,58,};int count = 1;void heap(int n);void adjust(int i,int n);int main(void){	int i;	printf("源数据为:");	for(i = 1;i<8;i++)		printf("%5d",a[i]);	heap(7);	printf("\n排序后的数据为:");	for(i = 1;i<8;i++)		printf("%5d",a[i]);	printf("\n");	return 0;}void heap(n)int n;{	int i,j,t;	for(i =n/2;i>0;i--)		adjust(i,n);	printf("\n初始化成堆===>   ");	for(i = 1;i < 8;i++)		printf("%5d",a[i]);	for(i = n-1;i>0;i--)	{		t = a[i+1];		a[i+1] = a[1];		a[1] = t;		adjust(1,i);		printf("\n第%2d步操作结果===>",count++);		for(j = 1;j<8;j++)			printf("%5d",a[j]);	}}void adjust(i,n)int i,n;{	int j,k,r,done=0;	k = r = a[i];	j = 2*i;	while((j<=n)&&(done==0))	{		if(j<n)		{			if(a[j]<a[j+1])				j++;		}		if(k>=a[j])			done = 1;		else		{			a[j/2] = a[j];			j = 2*	j;		}	}	a[j/2] = r;}

 

 

 

用Delphi 开发数据库程序经验三则 用Delphi 实 现 不 同 数 据 库 系 统 之 间 的 数 据 转 移 用DELPHI本身的控件输出TABLE表数据 用Delphi编程访问SQLServer数据库 用delphi编写医院的复杂报表 用Delphi程序维护Paradox 数据表的索引 用Delphi的InterBase数据库开发C&S应用程序 用Delphi进行数据库之间转换 用Delphi开发“瘦”单机数据库应用系统 用Delphi如何实现VFP中的Cache特性 用Delphi设计数据库应用的几点体会 在我们日常工作中,常会碰到这样一个难题:一大堆-Delphi资料 用DELPHI制作应用软件 用Dephi 程 序 维 护Paradox 数 据 表 的 索 引-Delphi资料 用Dephi程序维护Paradox数据表的索引-Delphi资料 用InstallShield制作数据库应用系统的安装程序-Delphi资料 在BDE中使用ASCII-Delphi资料 在DBMemo中查找文字-Delphi资料 在Delphi 程序中维护DBF 数据库 在Delphi 中 利 用 Tbatch 组 件 完 成 数 据 批 处 理 在Delphi 中使用计算出的字段 在Delphi3 程 序 中自 动 检 测、 建 立 数 据 库 别 名 和 表 格 在Delphi3程序中自动检测、建立数据库别名和表格 在Delphi4 BDE中配置Access数据库 在Delphi5 中修改了Delphi自带的VCL Source文件后怎样重建Delphi的库文 在DELPHI程序中动态设置ODBC数据源 在DELPHI程序中使用ADO对象存取ODBC数据库 在DELPHI程序中自动设置ODBC数据源 在Delphi的DBGrid中插入其他可视组件 在Delphi的Socket编程中如何从服务器向指定的客户机发送信息? 在Delphi动态生成定义数据库 怎么在窗体上放一个动画flash的,用什么组件可以这么做!!! ISO/C++标准要的请举手!! SQL里的DMO在VB里怎么使用 英文译中文,.怎么办?? 一个小问题 void CEx04aView::OnDraw(CDC* pDC)的CDC是什么?谢谢!! mcisendstring 与mciexecute 调用外部命令问题! 有偿求解:简体PDF在繁体WINDOWS环境下如何阅读 有谁在VB中使用过关于INTERNET CACHE的函数? 端口问题!~请问有什么办法知道一个程序所用的通讯端口号码!?~ 黑木黑木,我也给大家看看吧,不傻不要钱~~~(附照片) 如何将一画中的某一部分画到一个Image中 风之子,发呆呆,请进! 太可怕了, 愿人类永不受此难。 ado--vb数据库查找时怎样显示?? 我现在碰到了一个很奇怪的问题,高手能够解决吗? 哪有将打印输出为传真和email的源代码 急急急,谁来帮忙,兄弟有难 关于COOL360的问题? 一存储过程的问题 这些错误代码是什么意思? 请问如何在vb中截获消息 请问:在Windows98和Windows2000下支持的Winsock客户端套接字连接的最大个数分别是多少? 黑客软件 还是COM接口问题 大虾,帮个忙,一个小问题先谢谢!! 关于多次搜索的一个问题,大家都来看看啦!!!!!! 绘图仪的驱动程序 跳转至某一页应该怎么做? 强烈要求CSDN恢复‘帖子提前连接’功能,请帮忙UP! C++builder 中怎么判断某一个字符在不在字符串中? 求教:为什么我的控件下载特别慢?(在网页中用的控件,客户端浏览时下载) 明年毕业,想搞软件开发,现在很矛盾,是去大公司,还是去那种中小型的软件公司呢???? 求教有开发经验的高手关于XML和数据库的简单问题 查找窗口疑问 delphi的createoleobject 一个很急的问题??? 我怎么覆盖派生类中的virtual成员函数?(up加分,详情请入内) 寻找用过JMAIL的同志! 想问一下,在收邮件时,如何取得发件人的MAIL呢? 请问像大虾们说的comp.lang.c++.moderated这样的讨论组怎么访问?(Solstice) 简单问题:关于paradox数据库 进销存的问题 高分寻找ZIP密码破解高手! 请问有没有能通过Modem发送传真的控件? >>>>树状层次关系的算法? 怎样检测机子里有没有我指定的字体,如果没有并安装,谢谢 如何动态配置站点??? seek 函数??? 谁能帮我破解些ZIP密码! DB高手请看看:逐级缩小搜索范围的一个问题,大家都来看看啦!!!!!! C# 完全手册 中文版电子书 请问:15摄氏度密度1.0042的液体在 20摄氏底时的密度是多少? 是如何换算的呢? 草酸与油有反应吗(家里吃的食用油) 草酸稀溶液是什么?怎么配制?我的衣服上有了墨汁点,所以想请各位帮帮忙. 氢氧化钠浓溶液滴入氨水能制氨气吗?放热+平衡逆向移动 草酸能和什么反应(常见的) 具体的草酸溶液的配制配制一定浓度的草酸溶液的具体步骤,按实验报告的规则怎么写? 饱和氨水中加入同浓度氨水平衡会移动吗?为什么 草酸的常见反应 化验室盐酸1+1溶液及氨水1+1溶液怎样配制呢 在氨水中加入少量浓硫酸,平衡的移动方向,NH4的浓度怎样变化? 太阳能的恒温阀怎么不出热水了啊? 如何配置2%偏磷酸溶液和2%草酸溶液~求药品克数~ 飞机设计师为减轻飞机的质量,将飞机的钢制零件改为铝制零件,屎其质量减少104KG,则需要多少千克的铝、 钢的密度7.9*10的三次方 铝2.7*10的三次方 四季沐歌太阳能控制仪的温度设置!不知道这个控制仪怎么设置温度? 太阳能恒温阀关不住热水因冷水管坏了把冷水阀关闭,结果恒温阀无法控制热水,浴洒一直漏水,请问师傅们怎么办? 将氯化钴加入氯化铵与浓氨水的混合液中,可发生什么反应?生成何种配合物? 什么叫做平衡的移动?什么叫正向移动?什么叫逆向移动?增大反应物的浓度,平衡一定移动吗? 银和草酸能反应吗 氨水和氯化铵.氨水与氯化铵的混合溶液是 缓冲的吗 想做一个自动控制器,要有温度,光照,现在什么都自动化了,要有温度,光照,湿度,远程控制等 ,只要有几个无源开关输出就行,自己简单搭建可以吗,不知道有没有做这个的,成本越少越好, 恒温阀出水问题!冷水是压力罐,热水是太阳能大概有4米高左右,安装恒温阀,花洒出水量好小,管道和花洒都没有淤堵,怎么回事?有什么解决办法?对了,只放冷水的时候花洒出水量还是正常的,调 在稀氨水中加入浓氨水、盐酸、氯化铵会怎么移动?原因? 温度控制仪高总低怎么连 太阳能水阀怎么装这两个阀分别是干什么用的 ,我就知道其中一个是上水阀. 氯化铵和氨水混合这两种溶液混合好像有三种可能显酸性 ,碱性,中性这三种分别有三种不同的离子大小排序分别是什么?为什么?请各位老师或同学稍微讲详细一点, 氯化亚铜与浓氨水反应的化学方程式 如何称出牛奶的密度空饮料瓶,细线,弹簧测力计,水,奶 怎么测量空气密度? 有湿度控制器或温度控制器时,一定要配置加热器吗? 有机化学实验 如何鉴别草酸、尿素、苯甲酸、间-苯二酚? 蓖麻油炒鸡蛋有什么作用 为什么温度降低湿度会上升 如何鉴别草酸 蓖麻油有什么作用? 什么花与湿度和温度有关系拜托了各位 是花 尿素也能算是酰胺吗?为什么? 蓖麻油可以食用吗? 硝酸亚铁能与草酸反应吗?草酸与硝酸铜反应(要方程式) 太阳能热水器恒温淋浴阀没热水怎么办 蓖麻油有什么好处? 除水垢用草酸好还是用硝酸好? 太阳能热水器,一共三个阀,一个绿阀一个红阀还有一个是开关左边银色的 Na2CO3与氨水反应的化学方程式 初二 下册 物理题 关于求密度与压力的.如图 容器中装有某种液体,液体对容器底的压强为3x10³Pa(3000 Pa)则:该液体密度是多大? 容器底受到的压力是多大?(g取10N/kg)(两问!) 太阳能热水器,一共三个阀,一个绿阀一个红阀还有一个是开关左边银色的阀,应该怎么上水啊啊啊 碳酸钠能和氨水反应吗?碳酸钠固体能和氨水反应吗? 草酸对铁和铜的腐蚀厉害吗,我想用草酸来清洗空气能热水器 氨水和硫酸反应的化学方程式 碳酸钠与氨水反应为何有气体? 草酸铜沉淀是黑色还是蓝色 草酸和硫酸能共存吗?硫酸质量浓度为50%.另外,在酸性条件下,硫酸中含有的少量草酸怎么除去?如果高手们觉得太少,等我有分了再补给你。这些分数是我的全部家当了。 碳酸钠与浓氨水能反应吗? 请问什么地方有家庭太阳能发电装置?价格几何? 量筒的相关用法都说俯视大仰视小 我总是搞混 俯视时是量取体积大 还是所读示数大 那个楼下的,你说话跟放屁似的,看书我还用上网查啊 为什么二氧化硫能和氨水或者碳酸钠反应?能给我讲讲为什么能反应吗? 初二上学期物理期末复习,除了密度所有的,求知识梳理 物理量筒的使用方法 判断物体是空心还是实心问题 1、一体积为0.5dm3的铜球,其质量为2580g,问它是空心的还是实心的?如果是空心的,空心部分体积多大?(提示:此题有三种方法解) 2、有一体积为30 cm3的空心铜球,它 3密度知识的应用自我评价与作业(很急)保存在法国巴黎国际度量局中的“千克原器”,是一个底面直径为39mm,高为39mm的圆柱体,它的密度是多少?查表判断一下,它是用哪种物质制成的?要明天 草酸稀溶液和氨水如何配置谢谢了,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn