c++学习连载-堆排序学习及遇到问题

#include <iostream>

#ifndef _HEAP_H_
#define _HEAP_H_

using namespace std;
class heap
{
public:
heap()
{
}
int HeapPar(int i)
{
return i/2;
}
int HeapLeft(int i)
{
return 2*i;
}
int HeapRight(int i)
{
return 2*i+1;
}
template <class T>

int getArrayLen(T& array)

{//使用模板定义一个函数getArrayLen,该函数将返回数组array的长度

return (sizeof(array) / sizeof(array[0]));

}
void InHeat(int A[]);
void MaxHeapify(int i);
int* Pheap;
int HeapSize;
~heap()
{
delete [] Pheap;
}
}
#endif

#include"heap.h"
void heap::InHeat(int A[])
{
HeapSize=getArrayLen(A);
Pheap=new int[HeapSize];
}

#include"heap.h"
void heap::MaxHeapify(int i)
{
int l,r,largest;
int temp;
l=HeapLeft(i);
r=HeapRight(i);
if((l<=HeapSize)&&(Pheap[l-1]>Pheap[i-1]))
{
largest=l;
}
else
{
largest=i;
}
if((r<=HeapSize)&&(Pheap[r-1]>Pheap[largest-1]))
{
largest=r;
}
if(largest!=i)
{
temp=Pheap[i-1];
Pheap[i-1]=Pheap[largest-1];
Pheap[largest-1]=temp;
heap::MaxHeapify(largest);
}
}

#include <iostream>

#ifndef _HEAP_H_
#define _HEAP_H_

using namespace std;
class heap
{
public:
heap()
{
}
int HeapPar(int i)
{
return i/2;
}
int HeapLeft(int i)
{
return 2*i;
}
int HeapRight(int i)
{
return 2*i+1;
}
template <class T>

int getArrayLen(T& array)

{//使用模板定义一个函数getArrayLen,该函数将返回数组array的长度

return (sizeof(array) / sizeof(array[0]));

}
void InHeat(int A[]);
void MaxHeapify(int i);
void BuildMapHeap();
int* Pheap;
int HeapSize;
~heap()
{
delete [] Pheap;
}
};
#endif

#include"heap.h"
void heap::MaxHeapify(int i)
{
int l,r,largest;
int temp;
l=HeapLeft(i);
r=HeapRight(i);
if((l<=HeapSize)&&(Pheap[l-1]>Pheap[i-1]))
{
largest=l;
}
else
{
largest=i;
}
if((r<=HeapSize)&&(Pheap[r-1]>Pheap[largest-1]))
{
largest=r;
}
if(largest!=i)
{
temp=Pheap[i-1];
Pheap[i-1]=Pheap[largest-1];
Pheap[largest-1]=temp;
heap::MaxHeapify(largest);
}
}

#include"heap.h"
void heap::InHeat(int A[])
{
HeapSize=getArrayLen(A);
Pheap=new int[HeapSize];
}

#include"heap.h"
void heap::BuildMapHeap()
{
for(int i=heap::HeapSize/2;i>=1;i--)
{
heap::MaxHeapify(i);
}
}

• 本文已收录于以下专栏：

经典算法学习——堆排序

• CHENYUFENG1991
• 2016年02月03日 13:49
• 2264

《算法导论》之堆排序学习心得

• shiyanwei1989
• 2014年04月15日 20:18
• 634

《Java编程思想》学习笔记：内部类

• JF_1994
• 2017年02月08日 21:08
• 362

平时、工作、学习遇到或解决的问题（前端）

1.断词问题 2015-09-09一个词语（2到6个字） 如何每一行不断词？比如： 注意力培养 就分为了两行，这样是不行的解决方法: 设置 a {display: inline-clock;}2.两...
• sqfbeijing
• 2015年09月09日 17:15
• 362

C++学习书籍顺序推荐（二）----如何学好C++

• shanzhizi
• 2012年09月20日 23:00
• 5223

一篇关于学C++的感想（拿来与大家分享）

• u013255737
• 2013年12月28日 14:24
• 1682

c++学习连载-堆排序完整程序

#include #ifndef _HEAP_H_ #define _HEAP_H_ using namespace std; class heap { public:    ...
• hitflame
• 2013年12月06日 10:46
• 410

学习大数据过程中遇到的问题1

• a76847784
• 2017年05月02日 10:37
• 433

我第一年的C++学习之路 —— C++学习方法不断转变

• neicole
• 2011年09月14日 07:52
• 16764

C++学习的一些经历

• lipeng08
• 2016年03月25日 15:36
• 9445

举报原因： 您举报文章：c++学习连载-堆排序学习及遇到问题 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)