w7-5 怪物的身高(堆排序)
#include <iostream> using namespace std; int N,m,A[5000005]; //用scanf,printf卡常 template <class T> void sift(T a[],int k,int m){//换位,假设左右结点已排好序 int i=k;//根结点 int j=2*i;//左结点 T tmp; while(j<=m){//当j是最后一个结点时 if(j<m&&a[j]>a[j+1]) j++;//如果右结点更小,转到右结点,注意越界 if(a[i]<a[j]) return;//如果a较小,不管 else{//否则交换父,子结点 tmp=a[i]; a[i]=a[j]; a[j]=tmp; i=j;//换到子节点,下一次判断 j=2*i; } } } template <class T> void HeapSort(T a[],int n){ for(int i=n/2;i>=1;i--){ sift(a,i,n);//从后往前排序,i是起点,n是终点 } T tmp; for(int i=1;i<=m+1;++i){//一共只排m次 tmp=a[1];//交换根和最后结点 a[1]=a[n-i+1]; a[n-i+1]=tmp; sift(a,1,n-i);//排序 } printf("%d",a[n-m]); } int main() { scanf("%d%d",&N,&m); for(int i=1;i<=N;++i){ scanf("%d",&A[i]); } HeapSort(A,N); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现