博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
位置堆排序[置顶] 堆的构建与堆排序
阅读量:7091 次
发布时间:2019-06-28

本文共 2152 字,大约阅读时间需要 7 分钟。

废话就不多说了,开始。。。

    堆是一种经常使用数据结构,我们在编写算法的时候,会经常使用他,为了懂得这种数据结构,我自己学着实现了一下,几个基本操作,返回父节点的位置,左儿子节点的位置,右儿子节点的位置,调整堆,该方法是堆中最重要的操作方法!建立堆,堆排序都是以这个操作方法为核心的,重点说明下这个方法:

    输入为数组A[],位置i,

    1。先获得他的两个儿子的位置,

    2. 判断儿子和父亲谁大,

    3.若儿子比父亲大,则交换儿子和父亲的位置!

    4.并继续递归调整被交换过儿子的位置!

    

class MyHeap{public:	MyHeap();	~MyHeap();	int Parent(int i);	int Left(int i);	int Right(int i);	void Max_HeapPIFy(int A[],int i);	int exchange(int A[],int i,int largest);		int size;	int BuildMaxHeap(int A[],int n);	void HeapSort(int A[],int n);private:};MyHeap::MyHeap(){	}MyHeap::~MyHeap(){	}int MyHeap::Parent(int i){	return i/2;}int MyHeap::Left(int i){	return 2*(i+1)-1;}int MyHeap::Right(int i){	return 2*(i+1);}void MyHeap::Max_HeapPIFy(int A[],int i){	int l = Left(i);	int r = Right(i);	int largest ;	if (l
A[i]) { largest = l; } else { largest = i; } if (r
A[largest]) { largest = r; } if (largest!=i) { exchange(A,i,largest); Max_HeapPIFy(A,largest); } }int MyHeap::exchange(int A[],int i,int j){ int temp = A[i]; A[i] = A[j]; A[j] = temp; return 0;}int MyHeap::BuildMaxHeap(int A[],int n){ size = n; for (int i = (n)/2; i>=0; i--) { Max_HeapPIFy(A,i); } return 0;}void MyHeap::HeapSort(int A[],int n){ BuildMaxHeap(A,n); for (int i = size-1; i>0; i--) { exchange(A,0,i); size -=1; Max_HeapPIFy(A,0); } }
    每日一道理
美丽是平凡的,平凡得让你感觉不到她的存在;美丽是平淡的,平淡得只剩下温馨的回忆;美丽又是平静的,平静得只有你费尽心思才能激起她的涟漪。

    

    

    

int A[10]={2,3,4,5,6,7,8,9,0,1};	MyHeap m_heap;	m_heap.BuildMaxHeap(A,10);	for (int i = 0; i <10; i++)	{		cout<
<<"\t"; } cout <

文章结束给大家分享下程序员的一些笑话语录: 大家喝的是啤酒,这时你入座了。

你给自己倒了杯可乐,这叫低配置。
你给自已倒了杯啤酒,这叫标准配置。
你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。
你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。
你的同事给你倒了杯白酒,这叫推荐配置。
菜过三巡,你就不跟他们客气了。
你向对面的人敬酒,这叫p2p。
你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp。
你向一桌人挨个敬酒,这叫令牌环。
你说只要是兄弟就干了这杯,这叫广播。
有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。
你的小弟们过来敬你酒,这叫一对多。
你是boss,所有人过来敬你酒,这叫服务器。
酒是一样的,可是喝酒的人是不同的。
你越喝脸越红,这叫频繁分配释放资源。
你越喝脸越白,这叫资源不释放。
你已经醉了,却说我还能喝,叫做资源额度不足。
你明明能喝,却说我已经醉了,叫做资源保留。
喝酒喝到最后的结果都一样
你突然跑向厕所,这叫捕获异常。
你在厕所吐了,反而觉得状态不错,这叫清空内存。
你在台面上吐了,觉得很惭愧,这叫程序异常。
你在boss面前吐了,觉得很害怕,这叫系统崩溃。
你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

--------------------------------- 原创文章 By

位置和堆排序
---------------------------------

转载地址:http://sinql.baihongyu.com/

你可能感兴趣的文章
大叔也说Xamarin~Android篇~支付宝SDK的集成
查看>>
RestServer 2.0 正式版发布
查看>>
白板编程浅谈——Why, What, How(转)
查看>>
http协议的MP4文件播放问题的分析
查看>>
ObjC学习(2):数据类型(1)
查看>>
深入浅出如何解析xml文件---上篇
查看>>
activemq安装
查看>>
在Win7下用XManager远程控制ubuntu
查看>>
Linux下用gSOAP开发Web Service服务端和客户端程序(一)
查看>>
PaddlePaddle
查看>>
Doxygen syntax coloring in Vim
查看>>
严重推荐一个免费开源数据库建模工具软件 --OpenSystemArchitect 4.0
查看>>
Windows下visual studio code搭建golang开发环境
查看>>
基于微服务的软件架构模式
查看>>
Objective-C 和 Core Foundation 对象相互转换的内存管理总结
查看>>
[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)
查看>>
Celery Flower监控,完美搞定
查看>>
【趣味题】反应力测试
查看>>
深入了解volatile
查看>>
GAN完整理论推导、证明与实现(附代码)
查看>>