#include <stdio.h>
#include <stdlib.h>
#include <string.h> void Swap(int a[], int i, int j) // 交换函数
{
int t = a[i];
a[i] = a[j];
a[j] = t;
} void HeapMerge(int *a,int i,int n) //调整函数,也是核心地方 // 以下的树的概念都是把这个堆转变成树来说的
{
int lc = 2*i; // 因为我们用一位数组存放的,这里下标从1开始,如果1存放根结点,那么左紫薯就是2×i 右紫薯是 2 × 1 + 1
int rc = 2*i+1; // 因为堆排序这里是一颗完全二叉树,层次遍历这个树,然后依次放进这个下标从1开始的数组中,得到的就是以上结果了
int k = i; //存放当前调整的结点的下标
if(i <= n/2) //如果大于n/2,就是叶子结点了,就不需要再调整了
{
if(lc <= n && a[lc] > a[k]) // 左子树的比较
{
k = lc;
}
if(rc <= n && a[rc] > a[k]) // 右紫薯的比较 这样子就是选的左右紫薯中大的那个了
{
k = rc;
}
if(k != i) // 如果找到了它的左右紫薯中比它大的
{
Swap(a,i,k); // 交换这两个值
HeapMerge(a,k,n); // 继续把k这个位置的数,也就是上一步中为交换前的a[i],往下调整,要保证左右紫薯都小于根节点
}
}
} void HeapCreat(int *a,int n)
{
for(int i=n/2; i>=1; i--)
{
HeapMerge(a,i,n); // 从第一个非叶子结点开始调整树,n/2就是第一个非叶子结点,完全二叉树的性质决定的。
}
} void HeapSort(int *a,int n)
{
int i;
HeapCreat(a,n); //先调整好树,让成为一个大顶堆
for(i=n; i>=1; i--)
{
Swap(a,1,i); // 把这个堆顶,也就是最大的,放到最后
HeapMerge(a,1,i-1); // i - 1 也就是剩下的再重新调整
// 直到全部完成,层次遍历树变成有序序列,对应的数组就是有序数组
}
} int main()
{
int n,m,p,t, Min;
while(scanf("%d %d",&n,&m)!=EOF)
{
int a[12];
p = 1;
for(int i = 0; i < n; i++) // 这个题的原因,不能全部输入,对于全部的数建堆
{
scanf("%d",&t);
if(p < m + 1)
a[p++]=t;
else
{
Min = 1;
for(int j = 2; j < p; j++)
{
if(a[Min] > a[j])
Min = j;
}
if(a[Min] < t)
a[Min] = t;
}
} //挑出来前 m 大的数
HeapSort(a,m); // 堆排
for(int i = m; i >= 1; i--)
if(i==m)
printf("%d",a[i]);
else
printf(" %d",a[i]);
printf("\n");
}
return 0;
}

数据结构实验之排序四:寻找大富翁(SDUT 3401)的更多相关文章

  1. SDUT 3401 数据结构实验之排序四:寻找大富翁.!

    数据结构实验之排序四:寻找大富翁 Time Limit: 150MS Memory Limit: 512KB Submit Statistic Problem Description 2015胡润全球 ...

  2. SDUT OJ 数据结构实验之排序四:寻找大富翁

    数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...

  3. 数据结构实验之排序二:交换排序 (SDUT 3399)

    #include <iostream> #include <bits/stdc++.h> using namespace std; typedef long long ll; ...

  4. SDUT OJ 数据结构实验之图论四:迷宫探索

    数据结构实验之图论四:迷宫探索 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  5. SDUT OJ 数据结构实验之二叉树四:(先序中序)还原二叉树

    数据结构实验之二叉树四:(先序中序)还原二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...

  6. SDUT OJ 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...

  7. SDUT OJ 数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  8. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  9. SDUT OJ 数据结构实验之排序八:快速排序

    数据结构实验之排序八:快速排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定N ...

随机推荐

  1. 【解决方案】ArcGIS导入要素集后没反应

    内容源自:ArcGIS10.2基础教程(丁华) 书上要求: 1.在“练习”文件夹中新建一个名为“沈阳”的个人地理数据库和名为“shenyang”的要素集,设置地理坐标为“Xi'an 1980”,高程坐 ...

  2. websocket-shap 函数Broadcast的使用方法

    Broadcast:在websocket-shap函数的定义是:向WebSocket服务中的每个客户端发送数据,类似于广播的效果 如果要使用异步发送,可使用BroadcastAsync函数. 在源码中 ...

  3. 在Centos中安装.net core SDK

    在Linux中运行.net core 项目必须要有.net core SDK 环境.之前配置过几次,但由于没有做总结.过了几天又配置的时候 感觉特别陌生,今天就记录一次.net core SDK 的安 ...

  4. CentOS 下运行.net Core程序

    系统: 阿里云的默认 CentOS 7.5 镜像 项目环境:.Net Core 2.2 一.安装.Net Core的运行环境 第一步,如果是一台新的服务器,可以升级一下系统的基础软件.如果没有必要也可 ...

  5. robotframework的学习笔记(十八)——RequestsLibrary库的API介绍

    requestsLibrary的关键字不多,常用的就几个. Create Session: 创建一个session,连接某个服务器.Create Ntlm Session: 也是创建一个session ...

  6. PDF 补丁丁 0.6.2.3572 测试版发布

    近日有网友反馈 3571 测试版的补丁丁无法正常工作.请下载新发布的 3572 版本.

  7. JavaScript: 自动类型转换-续

    在上一篇文章中,我们详细讲解了JavaScript中的自动类型转换,由于篇幅限制,没能覆盖到所有的转换规则,这次准备详细讲解一下. 上次我们提到了对象类型参与运算时转换规则: 1). 在逻辑环境中执行 ...

  8. springboot通过idea打jar包

    springboot打jar包 一.      检查pom文件 <packaging>jar</packaging> 二.      切换到maven窗口 三.      先c ...

  9. Docker以https访问Harbor私有仓库(二)

    1 说明 前文Centos7搭建Harbor私有仓库(二)中,我们以https方式搭建了Harbor,本篇我们主要配置Docker以https方式访问Harbor私有仓库 2 Docker配置 2.1 ...

  10. centos在线安装ffmpeg

    简介: 跨平台解决方案,用于记录,转换和流式传输音频和视频 挂载yum源 https://rpmfusion.org/Configuration RHEL 7 or compatible like C ...