TOP K问题解法整理(C++实现) |
您所在的位置:网站首页 › 大文件topk › TOP K问题解法整理(C++实现) |
文章目录
前言一、top K问题是什么?二、解法1.基础中的基础解法2.进阶一:局部冒泡3.进阶二:快速选择3.进阶三:构造小顶堆/大顶堆
总结
前言
本文记录了针对各厂面试中常出的TOP K问题(求最大/最小的第K个元素)的各种解法。限于笔者实力不足,本文仅罗列笔者能够手写出的算法实现(欢迎补充) 一、top K问题是什么?在一堆数据里面找到前 K大/小的数。常见面试题出法:最大(小)K个数,前K个高频元素,第K个最大(小)元素。 具体有:有整数数组 a[8] = {4,5,1,6,2,7,3,8}这8个数字,则前4(K)大的数字为8,7,6,5这几个数字。 二、解法 1.基础中的基础解法要找前K大或者前K小的数,首先想到的方法就是将所有数据整体进行一个排序,然后输出前K个或者后K个(前n-K)个数据。 代码如下(示例): #include #include #include using namespace std; void QuickSort(vector &v, int start, int end) { int i = start; int j = end; if (i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |