堆排序算法实现问题,求指教

Standxwf 2013-03-31 11:44:28
//运行环境是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;
}
...全文
134 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoreWindows 2013-03-31
  • 打赏
  • 举报
回复
楼主参考下我写的《白话经典算法系列之七 堆与堆排序》 http://blog.csdn.net/morewindows/article/details/6709644 ------------------- MoreWindows 计科小硕 迅雷/微软/豌豆荚实习生 CSDN资深博客专家 2012年度CSDN博客之星 我的微博:http://weibo.com/MoreWindows 我的博客:http://blog.csdn.net/MoreWindows
Standxwf 2013-03-31
  • 打赏
  • 举报
回复
那个void MAX_HEAPIFY(int A[],int i,int heap_size)改成下面的 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; } MAX_HEAPIFY(A,largest,heap_size); }

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧