资源简介
根据严蔚敏数据结构书上的伪码实现的堆排序算法。用户输入随机数的个数,然后程序生成相应个数的随机数,同时进行堆排序,并输出排序后的结果。VC++6.0编译测试通过。
代码片段和文件信息
#include
#include
#include
void HeapSort(int *Lint length);
void ShowInfo(int *Lint length);
void MAXHEAPIFY(int *Lint nokint length);
FILE *fp;
int main()
{
int ij;
int number;
long startend;
int *L;
if((fp=fopen(“sort.txt““w“))==NULL)
{
printf(“cannot open file“);
exit(0);
}
printf(“请输入生成随机数的个数:“);
scanf(“%d“&number);
L = (int *)malloc((number+1) *sizeof(int));
//1.产生随机数
srand((int)time(0)); /*设置随机数种子*/
fprintf(fp“产生的随机数是:\n“);
for(i=1;i<=number;i++) //注意0号单元没有使用
{
j=rand();
fprintf(fp“%-8d“j);
L[i] = j;
}
printf(“\n“);
start = clock();
//测试的程序段
//2.堆排序
HeapSort(Lnumber);
fprintf(fp“\n排序的结果是:\n“);
ShowInfo(Lnumber);
end = clock();
fprintf(fp“\n程序运行时间 :%ld 毫秒\n“end-start);//单位:毫秒
fclose(fp);
printf(“正在打开文件……\n“);
system( “notepad sort.txt“ );
return 0;
}
void HeapSort(int *Lint length){
int i;
//建立大顶堆
for( i = length/2; i > 0; i--){
MAXHEAPIFY(Lilength);
}
for( i = length; i>1; i--){
//交换堆顶与尾部元素
int swap;
swap = L[1];
L[1] = L[i];
L[i] = swap;
//调整大顶堆
MAXHEAPIFY(L1i-1);
}
}
void MAXHEAPIFY(int *Lint nokint length){
int key;
int j;
key = L[nok];
for( j = 2 * nok; j <= length; j*=2){
if( j < nok && L[j] > L[j +1] ) j++; //j为key较小的记录的下标 ***
if( key > L[j] ) break; //***
L[nok] = L[j];
nok = j;
}
L[nok] = key;
}
void ShowInfo(int *Lint length){
int t;
for(t = 1;t <= length; t ++){
fprintf(fp“%-8d“L[t]);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 188463 2009-10-06 23:44 heapsort\Debug\heapsort.exe
文件 525312 2009-10-06 23:44 heapsort\Debug\heapsort.pdb
文件 7649 2009-10-06 23:44 heapsort\Debug\main.obj
文件 53248 2009-10-06 23:44 heapsort\Debug\vc60.pdb
文件 4302 2009-10-06 22:09 heapsort\heapsort.dsp
文件 539 2009-10-06 22:09 heapsort\heapsort.dsw
文件 41984 2009-10-06 23:44 heapsort\heapsort.ncb
文件 53760 2009-10-06 23:44 heapsort\heapsort.opt
文件 1284 2009-10-06 23:44 heapsort\heapsort.plg
文件 1732 2009-10-06 23:43 heapsort\main.c
文件 154 2009-10-06 23:44 heapsort\sort.txt
目录 0 2009-10-07 00:19 heapsort\Debug
目录 0 2009-10-06 23:44 heapsort
----------- --------- ---------- ----- ----
878427 13
- 上一篇:vc6读写操作excel2007的简单demo
- 下一篇:东北大学C++实验报告
评论
共有 条评论