堆排序算法实现问题,求指教
//运行环境是dev_c++
//出现问题是编译通过,但是运行不了。求指教
#include<iostream>
using namespace std;
const int MAX=1000;
int LEFT(int i)
{return 2*i;}
int RIGHT(int i)
{return (2*i+1);}
int PARENT(int i)
{ return i/2;}
void MAX_HEAPIFY(int A[],int i,int heap_size)
{
if(i>=heap_size) return;
int largest;
int l=LEFT(i);
int r=RIGHT(i);
if(l<=heap_size&&A[l]>A[i])
largest=l;
else largest=i;
if(r<=heap_size&&A[r]>A[i])
largest=r;
else largest=i;
if(largest!=i)
{
int temp=A[i];
A[i]=A[largest];
A[largest]=temp;
}
if(largest>=heap_size) return;
MAX_HEAPIFY(A,largest,heap_size);
}
void BUILD_MAX_HEAP(int A[],int heap_size)
{
for(int j=(heap_size/2);j>=1;j--)
{
MAX_HEAPIFY(A,j,heap_size);
}
}
void HEAPSORT(int A[],int heap_size)
{
BUILD_MAX_HEAP(A,heap_size);
for(int i=heap_size;i>=2;i--)
{
int temp=A[i];
A[i]=A[1];
A[1]=temp;
cout<<temp<<" ";
heap_size--;
MAX_HEAPIFY(A,1,heap_size);
}
}
int main()
{
int A[MAX];
int data;
int count=0;
for(int i=0;;i++)
{
cin>>data;
if(data=='#') break;
A[i]=data;
count++;
}
HEAPSORT(A,count);
system("pause");
return 0;
}