【文件属性】:
文件名称:实现快速排序算法和堆排序算法
文件大小:1KB
文件格式:CPP
更新时间:2016-07-08 06:19:38
堆排序
// 堆排序
#include
typedef int InfoType; // 定义其它数据项的类型
#include "compare.h"
#include "sort.h"
typedef SqList HeapType; // 堆采用顺序表存储表示
void HeapAdjust(HeapType &H,int s,int m) // 算法10.10
{
// 已知H.r[s..m]中记录的关键字除H.r[s].key之外均满足堆的定义,本函数
// 调整H.r[s]的关键字,使H.r[s..m]成为一个大顶堆(对其中记录的关键字而言)
RcdType rc;
rc=H.r[s];
for(int j=2*s;j<=m;j*=2){
if(j0;--i)
HeapAdjust(H,i,H.length);
for(i=H.length;i>1;--i){
t=H.r[1];
H.r[1]=H.r[i];
H.r[i]=t;
// H.r[1]←→H.r[i];
HeapAdjust(H,1,i-1);
}
}
void print(HeapType H)
{
int i;
for(i=1;i<=H.length;i++)
printf("(%d,%d)",H.r[i].key,H.r[i].otherinfo);
printf("\n");
}
#define N 8
int main()
{
RcdType d[N]={{49,1},{38,2},{65,3},{97,4},{76,5},{13,6},{27,7},{49,8}};
HeapType h;
int i;
for(i=0;i