heapsort.h
#include <iostream>
using namespace std;
template <class T>
class Heapsort
{
public:
void swap1(T &a, T &b)
{
T tmp;
tmp = a;
a = b;
b = tmp;
}
void insert_x(T data)
{
array[++length] = data;
int len = length;
int parent = len/2;
while(parent > 0)
{
if(array[parent] < array[len])
{
swap1(array[parent], array[len]);
len = parent;
}
else
break;
parent = len/2;
}
}
void deleMax(int len)
{
T tmp = array[1];
int ind = 1;
int left = 2*ind ;
int right = 2*ind +1 ;
while(left < len)
{
int large = (array[left] > array[right]) ? left : right;
array[ind] = array[large];
ind = large;
left = 2*ind ;
right = 2*ind +1 ;
}
array[ind] = array[len];
array[len] = tmp;
}
void printHeap()
{
for(int i = 1 ; i <= length ; i++)
{
cout<<array[i]<<" ";
}
cout<<endl;
}
void buildHeap()
{
cout<<"Please input the length of Heap you want to create : ";
int n;
cin>>n;
for(int i = 1; i <= n ; i++)
{
cout<<"Please input No. "<<i<<" number :";
T num;
cin>>num;
insert_x(num);
}
cout<<endl;
cout<<"The Heap is :";
printHeap();
}
void sortHeap()
{
for(int i = length ; i > 0 ; i--)
deleMax(i);
cout<<"The sort Heap is : ";
printHeap();
}
private:
int length = 0;
T array[] = {};
};
main
#include "heapsort.h"
using namespace std;
int main()
{
Heapsort<int> h;
h.buildHeap();
h.sortHeap();
cout << "Hello world!" << endl;
return 0;
}