#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. .net core获取数据库连接 抛出The type initializer to throw an exception

    原文:https://www.cnblogs.com/pudefu/p/7580722.html 在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.c ...

  2. JavaWeb 之 BeanUtils 工具类

    在上一个用户登录案例中,当从浏览器接收参数后,还需要创建 JavaBean 类,对其的属性每一项赋值,如果属性少,可以手动完成,但是当属性非常多,这时就发现非常不方便,在这里提供一个可以封装 Java ...

  3. 宝石JUELRYE单词JUELRYE珠宝

    juelrye n.珠宝 late 14c., juelrye "precious ornaments, jewel juelrye (uncountable) Adornment with ...

  4. Python学习日记(三十五) Mysql数据库篇 三

    使用Navicate 创建一个连接去使用Mysql的数据库,连接名可以取任意字符但是要有意义 新增一个数据库 填写新数据库名,设置它的字符集和排序规则 新建一个表 增加表中的信息 点击保存再去输入表名 ...

  5. JavaScript获得URL地址栏参数防乱码

    JavaScript获得URL地址栏参数防乱码 JavaScript中经常需要解析地址栏中拼接的参数.下面的代码基本是固定的代码,这里摘录下备用. //获得地址栏参数值 function getUrl ...

  6. windows下用纯C实现一个简陋的imshow:基于GDI

    intro 先前实现了GDI显示图像时设定窗口大小为图像大小,不过并没有刻意封装函数调用接口,并不适合给其他函数调用.现在简单封装一下,特点: 纯C 基于GDI,因此只支持windows平台 类似于o ...

  7. Linux DHCP 中继

    具体到一个公司的网络环境中,不可能只有一个VLAN,更不可能对每个VLAN都架设一个DHCP服务器,这时就要做一个DHCP的中继,使得DHCP的广播可以通过VLAN. 实验拓扑 三层交换机下面连接一台 ...

  8. Docker的系统资源限制及验正

    Docker的系统资源限制及验正 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.容器资源限制概述 1>.什么是"Limit a container's reso ...

  9. Docker Private Registry 常用组件

    Docker Private Registry 常用组件 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Registry概述 1>.什么是registry ...

  10. spring cloud (四) 请求熔断 feign

    1 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...