3. 堆排序 冷不防 2022-04-02 08:49 83阅读 0赞 <table> <tbody> <tr> <td>成绩</td> <td>10</td> <td>开启时间</td> <td>2018年11月25日 星期日 18:00</td> </tr> <tr> <td>折扣</td> <td>0.8</td> <td>折扣时间</td> <td>2018年12月15日 星期六 23:55</td> </tr> <tr> <td>允许迟交</td> <td>否</td> <td>关闭时间</td> <td>2018年12月25日 星期二 23:55</td> </tr> </tbody> </table> 实验要求:用堆排序算法按关键字递减的顺序排序。 程序输入:待排序记录数(整数)和待排序记录(整数序列); 程序输出:建堆结果和建堆后第一、第二次筛选结果。(注:待排序记录数大于等于3) <table> <thead> <tr> <th> </th> <th>测试输入<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=input&lang=zh_cn" rel="nofollow"><img alt="关于“测试输入”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>期待的输出<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=expectedoutput&lang=zh_cn" rel="nofollow"><img alt="关于“期待的输出”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>时间限制<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=timelimit&lang=zh_cn" rel="nofollow"><img alt="关于“时间限制”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>内存限制<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=memlimit&lang=zh_cn" rel="nofollow"><img alt="关于“内存限制”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>额外进程<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=nproc&lang=zh_cn" rel="nofollow"><img alt="关于“{$a} 个额外进程”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> </tr> </thead> <tbody> <tr> <td>测试用例 1</td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77938&test=100769&type=in&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>6↵</li> <li>11↵</li> <li>12↵</li> <li>16↵</li> <li>14↵</li> <li>15↵</li> <li>10↵</li> </ol></td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77938&test=100769&type=out&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>16 15 11 14 12 10 ↵</li> <li>15 14 11 10 12 ↵</li> <li>14 12 11 10 ↵</li> </ol></td> <td>1秒</td> <td>64M</td> <td>0</td> </tr> <tr> <td>测试用例 2</td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77938&test=100771&type=in&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>9↵</li> <li>9↵</li> <li>8↵</li> <li>7↵</li> <li>6↵</li> <li>5↵</li> <li>4↵</li> <li>3↵</li> <li>2↵</li> <li>1↵</li> </ol></td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77938&test=100771&type=out&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>9 8 7 6 5 4 3 2 1 ↵</li> <li>8 6 7 2 5 4 3 1 ↵</li> <li>7 6 4 2 5 1 3 ↵</li> </ol></td> <td>1秒</td> <td>64M</td> <td>0</td> </tr> </tbody> </table> #include<stdio.h> #include<stdlib.h> int heap[200]; int length; void HeapAdjust(int x,int t) { //i代表现在为止,j代表左右子树位置 int i,j,up; i=x; j=2*i; up=heap[i]; while(j<=t) { if(j<t&&heap[j]<heap[j+1]) j++; if(up<heap[j]) { heap[i]=heap[j]; i=j; j=2*i; } else { j=t+1; } } heap[i]=up; } // void HeapAdjust( int x, int y) // { // int rc=heap[x]; // for(int j=2*x;j<=y;j*=2){ // if(j<y && rc < heap[j]) // j++; // if(rc < heap[j]) // break; // heap[x]=heap[j]; // x=j; // } // heap[x]=rc; // heap[1]=heap[y]; // } void HeapSort() { int i; for(i = length/2; i>0; i--){ HeapAdjust(i,length); } } int main() { scanf("%d",&length); for(int i=1; i<=length ;i++) scanf("%d",&heap[i]); for(int q = 0; q < 3; q++){ HeapSort(); for(int i=1;i<=length;i++) printf("%d ",heap[i]); printf("\n"); int temp = heap[1]; heap[1] = heap[length]; heap[length] = heap[1]; length--; } return 1; }
相关 Python3 堆排序 $ 理解堆排序参考: 堆排序算法(图解详细流程) https://blog.csdn.net/u010452388/article/details/81283998 堆排 谁借莪1个温暖的怀抱¢/ 2023年05月29日 03:25/ 0 赞/ 6 阅读
相关 排序-堆排序 1.堆排序前言 前面博客中讲到简单选择排序,它在待排序的n个记录中选择一个最小的记录需要比较n-1次。本来这也可以理解,查找第一个数据需要比较这么多次是正常的,否则如何知 旧城等待,/ 2022年09月30日 06:45/ 0 赞/ 226 阅读
相关 【排序】堆排序 堆的定义 设有n个元素的序列 k1,k2,…,kn,当且仅当满足下述关系之一时,称之为堆。 ![图示][SouthEast] 解释:如果让满足以上条件的元素序列 (k 分手后的思念是犯贱/ 2022年06月18日 11:47/ 0 赞/ 262 阅读
相关 看懂堆排序——堆与堆排序(三) 看懂堆排序——堆与堆排序(三) 看懂堆排序——堆与堆排序(三) 堆排序的基本思想 代码详解 偏执的太偏执、/ 2022年05月25日 06:52/ 0 赞/ 278 阅读
相关 排序——堆排序 堆排序代码 include <iostream> using namespace std; include <stdio.h> in 墨蓝/ 2022年05月21日 12:05/ 0 赞/ 252 阅读
相关 3. 堆排序 <table> <tbody> <tr> <td>成绩</td> <td>10</td> <td>开启时间</td> <td>2018 冷不防/ 2022年04月02日 08:49/ 0 赞/ 84 阅读
相关 堆排序 什么是堆排序,堆排序能解决什么问题? 在排序的过程中,不能把进行排序的过程中,得一些信息保留下来吗?来加快排序的速度吗?答案是可以的。通过利用完全二叉堆的结构来保留信息。 迷南。/ 2021年10月29日 07:20/ 0 赞/ 361 阅读
相关 堆和堆排序 堆排序 堆排序基本介绍 1. 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也 柔光的暖阳◎/ 2021年10月19日 21:12/ 0 赞/ 386 阅读
相关 排序-堆排序 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 在说明堆排序的过程前得先了解什么是堆: 先看下图(来源 清疚/ 2021年09月20日 03:22/ 0 赞/ 428 阅读
相关 堆排序 堆排序的特点是:在排序过程中,将待排序数组看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中父结点和子结点之间的内在关系,在当前无序区中选择关键字最大(或最小) 不念不忘少年蓝@/ 2021年09月17日 00:16/ 0 赞/ 450 阅读
还没有评论,来说两句吧...