堆的应用(topk问题)
创始人
2024-05-31 22:41:41
0

文章目录

  • 1.堆排序
    • 1.1代码实现
  • 2. TOP-K问题
    • 2.1原理
    • 2.2实例分析

1.堆排序

堆排序即利用堆的思想来进行排序,总共分为两个步骤:
1.建堆
升序:大堆
降序:小堆
2.利用堆删除思想来排序
在这里插入图片描述

1.1代码实现

void Heapsort(int* a, int n)
{for (int i = (n - 1 - 1) / 2; i >= 0; --i)//建大堆{AdjustDown(a, n, i);}int end = n - 1;while (end > 0){Swap(&a[0], &a[end]);AdjustDown(a, end, 0);end--;}
}

在这里插入图片描述

2. TOP-K问题

2.1原理

TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。
比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。
对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决,基本思路如下

  1. 用数据集合中前K个元素来建堆
    前k个最大的元素,则建小堆前k个最小的元素,则建大堆
    为什么求最大的k个建小堆,最小的k个建大堆?

如果求最大的k个建大堆的话,这里假设k=5,我们建了大堆以后,假如第6个元素就是最大的那个,当他进堆以后,第二大第三大的都进不来了,所以我们要建小堆

  1. 用剩余的N-K个元素依次与堆顶元素来比较,不满足则替换堆顶元素
    将剩余N-K个元素依次与堆顶元素比完之后,堆中剩余的K个元素就是所求的前K个最小或者最大的元素。

2.2实例分析

这道题假设求最小的五个,也就是k=5
在这里插入图片描述

先给定一组数据
在这里插入图片描述

对前k个建堆(建大堆求最小的k个)

for (int i = (k - 1 - 1) / 2; i >= 0; --i){AdjustDown(a, k, i);}

在这里插入图片描述
用堆顶元素与剩下的元素比较,小的进堆,并向下排序

int j = 0;for (j = k; j < n; j++){if (a[j] < a[0]){a[0] = a[j];AdjustDown(a, k, 0);}}

在这里插入图片描述

相关内容

热门资讯

六一主持词开场白 六一主持词开场白  送去五月的芬芳,迎来六月的时光,六一儿童节即将来临,以下是由应届毕业生网PQ小编...
郭德纲相声论梦台词 郭德纲相声论梦台词  郭德纲出现引起了社会对相声关注,很多人对相声感兴趣,开始思考相声中问题。下面是...
学校元旦经典致辞 学校元旦经典致辞范文(精选5篇)  在我们平凡的日常里,大家一定都接触过致辞吧,致辞的措词造句要考虑...
快板台词 快板台词大全  快板是一种汉族说唱艺术,属于中国曲艺韵诵类曲种。早年称作“数来宝”,也叫称“顺口溜”...
读书活动主持词开场白   读书活动主持词开场白1  尊敬的各位领导、各位来宾、各位参赛选手:  大家下午好!在春意盎然,百...
感谢老师致辞 感谢老师致辞(精选12篇)  在平日的学习、工作和生活里,要用到致辞的地方还是很多的,致辞是指在举行...
结婚典礼感谢致辞 结婚典礼感谢致辞(通用15篇)  在平平淡淡的学习、工作、生活中,要用到致辞的情况还是蛮多的,致辞要...
大鱼海棠配音台词 大鱼海棠配音台词  蛰伏十二年的动画《大鱼海棠》,终于上映了。虽然剧情被很多人吐槽,但美得不像话的画...
小学毕业典礼主持词 小学毕业典礼主持词实用范文  活动对象的不同,主持词的写作风格也会大不一样。在当今中国社会,司仪等是...
篮球赛闭幕词 篮球赛闭幕词(精选15篇)篮球赛闭幕词1各位来宾、同志们:  为期xx天的xxx第二届职工篮球赛,在...
元旦联欢晚会主持词 元旦联欢晚会主持词范文(精选9篇)  主持词分为会议主持词、晚会主持词、活动主持词、婚庆主持词等。在...
大型文艺演出主持词 大型文艺演出主持词  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。在当今中国社...
开学典礼致辞 开学典礼致辞15篇  在日常生活或是工作学习中,大家都经常接触到致辞吧,致辞具有“礼仪性”或“仪式化...
农村婚礼司仪主持词 农村婚礼司仪主持词15篇  主持词需要富有情感,充满热情,才能有效地吸引到观众。在当今不断发展的世界...
如何主持会议参考 如何主持会议范文参考  1.宣布会议开始。会议时间到后,若全体与会人员都已到位(至少重要的与会人员已...
韩剧漂亮男人经典台词 韩剧漂亮男人经典台词  1、答案都是在当事人手里的,不知道人们为什么,明明是自己非常了解的问题,但是...
外公七十大寿祝寿词 外公七十大寿祝寿词  外公七十大寿祝寿词  尊敬的外公、外婆、各位长辈、各位来宾:    大家好!今...
《香瓜七兄弟》经典台词 《香瓜七兄弟》经典台词  1. 阿丽呀,我哪好,我改还不行吗  2. 记不记得上回你尿炕 阿姨来了你...
孙子满月酒爷爷致辞 孙子满月酒爷爷致辞(通用6篇)  无论是身处学校还是步入社会,大家都不可避免地会接触到致辞吧,致辞具...
国庆文艺汇演主持词 国庆文艺汇演主持词  主持词要注意活动对象,针对活动对象写相应的主持词。在当今社会中,主持人在活动中...