当前位置: 首页 > wzjs >正文

做国外贸易的网站站长工具同大全站

做国外贸易的网站,站长工具同大全站,上海商城网站建设,管理咨询公司属于什么行业我们有一个长度为 M 的数组,现在我们想从中找出 最小的 N 个元素。例如: int a[10] {12, 3, 5, 7, 19, 0, 8, 2, 4, 10};从中找出 最小的 4 个元素。 正确方法:使用大小为 N 的「大顶堆」 原因分析: 我们想保留最小的 4 个元素…

我们有一个长度为 M 的数组,现在我们想从中找出 最小的 N 个元素。例如:

int a[10] = {12, 3, 5, 7, 19, 0, 8, 2, 4, 10};

从中找出 最小的 4 个元素


正确方法:使用大小为 N 的「大顶堆」

原因分析:

我们想保留最小的 4 个元素,因此可以使用一个大顶堆,堆的作用是“维护最小的 N 个数”。

思路如下:

  1. 初始化:先把前 4 个数放入堆中 → 12, 3, 5, 7
    • 堆顶为最大值 12,表示目前“最小的 4 个元素”中最大的那个是 12。
  2. 从第 5 个数开始往后遍历数组,只要当前数 < 堆顶,就替换堆顶
  3. 最终堆中留下的是“最小的 4 个数”。

具体步骤(维护一个大顶堆):

初始数组:

{12, 3, 5, 7, 19, 0, 8, 2, 4, 10}

步骤:

  • 初始化堆(大顶堆):[12, 3, 5, 7] → 堆顶是 12
  • 接下来遍历:
当前元素与堆顶比较操作新堆内容(无序表示)
19> 12略过[12, 3, 5, 7]
0< 12删除 12,插入 0[7, 3, 5, 0]
8> 7略过[7, 3, 5, 0]
2< 7删除 7,插入 2[5, 3, 2, 0]
4< 5删除 5,插入 4[4, 3, 2, 0]
10> 4略过[4, 3, 2, 0]

最终堆中元素:[0, 2, 3, 4]


如果用小顶堆会怎么样?

假如你误用了小顶堆,初始堆是 [3, 12, 5, 7],堆顶是 3。

你遍历后面的元素时,堆顶一直是最小的那个,永远不会被替换掉。

问题是:你不知道当前 4 个是不是最小的 4 个,因为最大值还留在里面!

你得存下所有 M 个元素,再从小顶堆中取前 N 个,等于多维护了不必要的 M - N 个元素,效率大大降低。


总结口诀:

🔹 找最小的 N 个数 → 用大小为 N 的大顶堆,因为你要踢走大的。
🔹 找最大的 N 个数 → 用大小为 N 的小顶堆,因为你要踢走小的。


http://www.dtcms.com/wzjs/221104.html

相关文章:

  • 推广营销海外网站宁波网络推广seo软件
  • 我需要一个网站cps推广联盟
  • 政府网站建设运维推广网络推广平台
  • 做网站前端用什么技术好淘宝怎么做引流和推广
  • 做一个公司网站一般多少钱怎样优化网站排名靠前
  • html5网站正在建设中模板下载竞价防恶意点击
  • 分享设计的网站培训机构加盟店排行榜
  • 做企业网站不好混seo学习
  • ps学做翻页相册网站百度热门关键词排名
  • 安徽网站建设怎么样广州番禺发布网
  • 重庆是哪个省市宁波 seo排名公司
  • 深圳优秀网站建设价格网上推广怎么弄?
  • 浙江省台州市做网站多少钱电商运营是做什么的
  • 做贸易注册网站用自己名字站长工具使用方法
  • 泰安网站建设公司带云搜索系统
  • 做海外贸易网站中国十大企业培训公司
  • 张家港网站制作网站外链是什么意思
  • 免费制作相册视频网站模板seo关键词查询排名软件
  • 武汉网站搜索优化外贸营销系统
  • 记录开发wordpress河南网站关键词优化
  • wordpress网站seo谷歌外贸平台推广需要多少钱
  • 做三级锅炉证模拟考试的网站福州专业的seo软件
  • 大浪做网站公司百度关键词优化排名技巧
  • 专业制作网站 地摊免费百度seo引流
  • 网页设计欣赏作品搜索引擎优化需要多少钱
  • oss可以做网站根目录吗高端营销型网站
  • 在线制作网页系统碉堡了seo博客
  • 做网站和做系统的区别各大搜索引擎提交入口
  • 多就能自己做网站资阳市网站seo
  • 请问哪个网站可以做当地向导百度在线下载