[C++][算法基础]堆排序(堆)

输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。

输入格式

第一行包含整数 n 和 m。

第二行包含 n 个整数,表示整数数列。

输出格式

共一行,包含 m 个整数,表示整数数列中前 m 小的数。

数据范围

1≤m≤n≤10^{5}
1≤数列中元素≤10^{9}

输入样例:
5 3
4 5 1 3 2
输出样例:
1 2 3

代码:

#include<iostream>
#include<algorithm>
using namespace std;

const int N = 100010;
int heap[N],l;
int n,m;

void down(int now){
    int target = now;
    if(2*now <= l && heap[2*now] < heap[target]){
        target = 2 * now;
    }
    if(2*now + 1<= l && heap[2*now + 1] < heap[target]){
        target = 2 * now + 1;
    }
    if(target != now){
        swap(heap[target],heap[now]);
        down(target);
    }
}

int main(){
    cin>>n>>m;
    for(int i = 1;i<=n;i++){
        cin>>heap[i];
    }
    l = n;
    for(int i = n/2;i>0;i--){
        down(i);
    }
    while(m--){
        cout<<heap[1]<<" ";
        heap[1] = heap[l];
        l--;
        down(1);
    }
    return 0;
}

 

相关推荐

  1. 排序算法-排序

    2024-04-08 13:42:02       18 阅读
  2. [排序算法]排序

    2024-04-08 13:42:02       27 阅读
  3. C#算法排序算法

    2024-04-08 13:42:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 13:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 13:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 13:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 13:42:02       18 阅读

热门阅读

  1. 利用hdfs gateway挂载NFS到本地

    2024-04-08 13:42:02       10 阅读
  2. GitOps是DevOps的下一个风口吗?

    2024-04-08 13:42:02       13 阅读
  3. FDA 上市库 Mini | 药物筛选 | MCE

    2024-04-08 13:42:02       14 阅读
  4. HyperBus协议--HyperFLASH中Program Suspend 功能的理解

    2024-04-08 13:42:02       11 阅读
  5. 3.9 Python格式化字符串

    2024-04-08 13:42:02       9 阅读