下列算法实现堆排序,HeapSort是主函数,请补齐空白处。(每空2分)
#define MAXSIZE 1000J //待排顺序表最大长度
Typedef int KeyTYpe; 1/关键字类型为整型
typedef struct {
KeyType key; //关键字项
InfoType otherinfo; //其它数据项
} RedType; //记录类型
typedef struct {
RedType r[MAXSIZE+1]; //r[0]闲置
int length; //顺序表长度
} SqList; //顺序表类型
typedef SqList HeapType; //堆采用顺序表存储表示
void HeapAdjust (HeapType &H, int s, int m)
{//已知H.r[s..m]中记录的关键字除H.r[s].key 之外均满足堆的特征 //本函数自上而下调整H.r[s] 的关键字,使H.r(s..m]也成为一个大顶堆
rc =H.r[s]; // 暂存
r[$]for(j=2* s;j<=m;(1))
{if(j<m && (2) ) ++j; }if(rc.key >=H.rfj].key) break;
H.r[s] =H.f[]; s=j; } (3) } void HeapSort(HeapType &H) //对顺序表H进行推排序 { for (i=H.length/2;i>0;i) HeapAdjust____ (4)____ );
for (=H.length;iDl;i) { H.r[l]-H.r[i]; HeapAdjust(___ (5)_____ ): } }