最小堆排序

算法设计与分析实验三

随机数的最小堆排序问题

(1) 实验题目

随机数的最小堆排序问题 (2)实验目的

掌握随机数的产生方式;掌握最小堆的建立和最小堆的排序问题。 (3)调试通过并正确执行给定功能要求的实验代码

#include #include #include void main() {

void SORT(int n,int array[]);

void push_down(int first,int last,int A[]);

int a,b; FILE*fp;

if((fp=fopen("input.txt","r"))==NULL) { printf("cannot open this file/n"); exit(0); }

fscanf(fp,"%d,%d",&a,&b); fclose(fp);

srand((unsigned)time(NULL)); int c=b-a;

int i,j,m[21]={0};

for(i=1;i

void SORT(int n,int array[]) {

void push_down(int first,int last,int A[]); void swap(int *x,int *y);

FILE *fp1;

if((fp1=fopen("output.txt","w"))==NULL) { printf("cannot open this file\n");

exit(0); }

fputs("产生的20个随机数为:\n",fp1); printf("产生的20个随机数为:\n");

int k;

for(k=1;k

printf("\n"); printf("start:\n"); fputs("\n",fp1); fputs("start:\n",fp1);

int i;

printf("生成最小堆\n"); fputs("生成最小堆\n",fp1); for(i=n/2;i>=1;i--) { push_down(i,n,array); int j;

for(j=1;j

fprintf(fp1,"%d ",array[j]); }

printf("\n"); fputs("\n",fp1); }

printf("最小堆排序\n"); fputs("最小堆排序\n",fp1);

for(i=n;i>=2;i--) { swap(&array[1],&array[i]); push_down(1,i-1,array); int j; for(j=1;j

printf("%d ",array[j]); fprintf(fp1,"%d ",array[j]); } printf("\n"); fputs("\n",fp1); }

fclose(fp1); }

void push_down(int first,int last,int A[]) {

void swap(int *x,int *y); int r; r=first;

while(rA[2*r]) swap(&A[r],&A[2*r]); r=last; } else if(A[r]>A[2*r]&&A[2*r]A[2*r+1]&&A[2*r+1]

void swap(int *x,int *y) {

int temp1; temp1=*x; *x=*y; *y=temp1; }

(4)实验结果截图

算法设计与分析实验三

随机数的最小堆排序问题

(1) 实验题目

随机数的最小堆排序问题 (2)实验目的

掌握随机数的产生方式;掌握最小堆的建立和最小堆的排序问题。 (3)调试通过并正确执行给定功能要求的实验代码

#include #include #include void main() {

void SORT(int n,int array[]);

void push_down(int first,int last,int A[]);

int a,b; FILE*fp;

if((fp=fopen("input.txt","r"))==NULL) { printf("cannot open this file/n"); exit(0); }

fscanf(fp,"%d,%d",&a,&b); fclose(fp);

srand((unsigned)time(NULL)); int c=b-a;

int i,j,m[21]={0};

for(i=1;i

void SORT(int n,int array[]) {

void push_down(int first,int last,int A[]); void swap(int *x,int *y);

FILE *fp1;

if((fp1=fopen("output.txt","w"))==NULL) { printf("cannot open this file\n");

exit(0); }

fputs("产生的20个随机数为:\n",fp1); printf("产生的20个随机数为:\n");

int k;

for(k=1;k

printf("\n"); printf("start:\n"); fputs("\n",fp1); fputs("start:\n",fp1);

int i;

printf("生成最小堆\n"); fputs("生成最小堆\n",fp1); for(i=n/2;i>=1;i--) { push_down(i,n,array); int j;

for(j=1;j

fprintf(fp1,"%d ",array[j]); }

printf("\n"); fputs("\n",fp1); }

printf("最小堆排序\n"); fputs("最小堆排序\n",fp1);

for(i=n;i>=2;i--) { swap(&array[1],&array[i]); push_down(1,i-1,array); int j; for(j=1;j

printf("%d ",array[j]); fprintf(fp1,"%d ",array[j]); } printf("\n"); fputs("\n",fp1); }

fclose(fp1); }

void push_down(int first,int last,int A[]) {

void swap(int *x,int *y); int r; r=first;

while(rA[2*r]) swap(&A[r],&A[2*r]); r=last; } else if(A[r]>A[2*r]&&A[2*r]A[2*r+1]&&A[2*r+1]

void swap(int *x,int *y) {

int temp1; temp1=*x; *x=*y; *y=temp1; }

(4)实验结果截图


相关文章

  • 幼儿园中班数学教案:大小排序
  • 活动目标 1.学习按照大小正逆排序三个物体. 2.用语言讲述排序结果,培养幼儿的口语表达能力. 3.培养幼儿的观察能力.比较能力和对排序的兴趣. 活动准备 1.趣味练习:比较概念 2.小熊玩具三个;礼物三盒;球三个(大小不同);玩具(大小不 ...查看


  • 幼儿园中班数学教案:大小正逆排序
  • 活动目标 1.学习按照大小正逆排序三个物体. 2.用语言讲述排序结果,培养幼儿的口语表达能力. 3.培养幼儿的观察能力.比较能力和对排序的兴趣. 活动准备 1.趣味练习:比较概念 2.小熊玩具三个;礼物三盒;球三个(大小不同);玩具(大小不 ...查看


  • 比赛项目的排序1
  • 比赛项目的排序 齐汇,陈艳,赵伸极 (浙江师范大学,浙江金华,321004) 摘要 本文根据某个运动比赛的报名情况,合理安排比赛项目顺序,使连续参加两项比赛的运动员人数尽可能的少, 以便运动员恢复体力,发挥正常水平. 问题1.合理安排某个小 ...查看


  • 一种最短路径射线追踪的快速算法
  • 第49卷第5期2006年9月 地 球 物 理 学 报 CHINESE JOURNAL OF GEOPHYSICS Vol.49,No.5Sep.,2006 张美根,程冰洁,李小凡等.一种最短路径射线追踪的快速算法.地球物理学报,2006,4 ...查看


  • 幼儿园小班数学教案:水果排序
  • 活动目标 1.学习按大小顺序将3以内的物体从小到大或从大到小进行排序. 2.乐意用语言表达自己的排序方法,并养成良好的操作习惯. 3.体验数学排序活动的乐趣. 活动准备 1.趣味练习-排序 2.教具:苹果树一棵.3个大小不一样的苹果图片2套 ...查看


  • 幼儿园小班数学教案:水果排序怎么排
  • 通过日常生活中的事情,怎样激发学数学的兴趣,知道数学在日常生活中的用处.小孩子上幼儿园小班了,他们也开始学简单的数学了,今天,太平洋亲子网小编用水果向大家介绍一下,怎么样给幼儿园小班的孩子学数学呢? 活动目标 1.学习按大小顺序将3以内的物 ...查看


  • 贪心算法设计实验报告
  • 湖北工业大学计算机学院 <算法设计技巧与分析>课程实验报告 实验名称姓 名 贪心算法的运用 系院专业 指导教师 班 级 实验序号学成 号绩 实验日期一.实验目的 1. 掌握贪心算法的基本概念和两个基本要素2. 熟练掌握贪心算法解 ...查看


  • 数据分析员笔试题
  • 1.海量日志数据,提取出某日访问百度次数最多的那个IP . 首先是这一天,并且是访问百度的日志中的IP 取出来,逐个写入到一个大文件中.注意到IP 是32位的,最多有个2^32个IP .同样可以采用映射的方法,比如模1000,把整个大文件映 ...查看


  • C语言程序设计冒泡排序教学案例 杨进
  • C 语言程序设计冒泡排序教学案例 永川职业教育中心 杨进 [案例背景] 排序是计算机学科中一项复杂而重要的技术,在各种软件中使用频率都很高,因此专家们研究了各种排序算法.在中职类设计课程教学中,常以冒泡排序来讲解排序的原理,它简单,但过程繁 ...查看


热门内容