题目:给出N个无序的数,然后找出其中最大的k个数解题思路: 首先测试数据有
转载
2022-11-17 00:11:15
153阅读
这里k==100#include #include #include #include #include using namespace std;int main(){ //默认是大顶堆 priority_queue q; int n, t; scanf("%d", &n); for(int i=0; i0) { if(first) ...
转载
2020-08-06 16:51:00
68阅读
2评论
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这道题是一道非常经典的题目, top k 因此解法也
原创
2024-03-12 16:57:16
48阅读
解法一:假设元素的数量不大,用快排或堆排序都是不错选择,平均时间复杂度都是O(N*log N)。然后取出前K个,O(K
原创
2023-06-13 10:30:33
54阅读
在大量数据中找出最大或者最小的K个数据
原创
2016-04-04 23:27:03
629阅读
点赞
# 寻找最大k个数的冒泡排序算法
在数据处理中,我们常常需要从一组数据中找出最大的几个数。虽然可以使用多种方法来实现这一目的,但这里我们将专注于冒泡排序算法。尽管冒泡排序在效率上不是最优,但它简单易懂,适合初学者学习和理解。
## 冒泡排序算法简介
冒泡排序是一种简单的排序算法。它重复地遍历待排序的数列,比较相邻元素并交换它们的位置,如果它们的顺序错误。这个过程就像气泡一样,较大的元素“浮”
原创
2024-10-15 07:04:12
18阅读
数据类型一、数据类型
1.Java的八大基本数据类型为: 整型 byte字节型1字节 8bit 最大存储数据量是255,存放的数据范围是-128~127之间 short短整型2字节 16bit最大数据存储量是65536,数据范围是-32768~32767之间 int整型4字节 32bit最大数据存储容量是2的32次方减1,数据范围是负的2的
转载
2024-01-23 22:15:11
62阅读
这是一个很常见的算法问题,从一组数中选出最大的K个。
《编程之美》上也有这个问题的一些解法。其中,一种较好的解法就是利用有序队列(如JAVA中的PriorityQueue),主要的算法思路如下:
先从第一个数开始,依次入队k个数,此时,有序队列以对这k个数排序完成,按照从小(队列首)到大
原创
2010-02-20 13:17:21
855阅读
问题描写叙述:求一个数组的最大k个数。如,{1,5,8,9,11,2,3}的最大三个数应该是,8,9,11 问题分析: 1.解法一:最直观的做法是将数组从大到小排序,然后选出当中最大的K个数。可是这种解法,复杂度是O(logn*n),可是有时候并不须要排序,用简单的选择排序。或者是冒泡排序,那么就K
转载
2017-07-09 15:23:00
128阅读
从N个数据中找出最大的K个数据,而且这里有一个限制:内存里存不下所有的N个数据,但是可以存下K个数据。这就让我们打消了用排序的方法来解的念头。 在这里我们使用堆排序来完成。 因为我们只能有K个数据那么大的空间,所以我们建一个K大的堆,将N的前K个数据插入到堆中,然后调整堆。(对于堆结构不了解的可以查看我微博 &n
原创
2016-04-28 23:38:43
1116阅读
编程之美2.5:寻找最大的K个数 引申:寻找第k大的数:方法一:// 选择第k大的数(通过改进快速排序来实现) public static void SelectShort(int[] array, int low, int high, int k, out int value) { int i = low; int j =
转载
2014-01-07 14:52:00
40阅读
2评论
拿到这个题目我想到了很多方法,但是在我想到的方法中,要把在100万个数中找到前k个数,都不适用。最后通过我的不断研究,我想到了我认为最简单的方法,就是利用堆来做这道题目。 下面我分析一下我用堆排序的思路: 1.我先建一个大小为k的堆。 2.把100万中前k个数放到这个堆中。
原创
精选
2016-05-09 15:39:24
1306阅读
堆的应用-> 海量数据处理
原创
2016-06-02 11:20:41
1760阅读
问题:在N个数据中查找到第k个大的值。 原文地址 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1:我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。 解法2:利用选择排序或交互
转载
2013-03-26 15:36:00
872阅读
2评论
给你n个数,让你找出其中最大的K个数。解法1:很多人上来就对其进行排序,选用不同的排序方法有不同的时间复杂
原创
2022-07-19 10:19:28
151阅读
有若干个互不相等的无序的数,怎么选出其中最大的k个数。我自己的方案:因为学过找第k大数的O(N)算法,所以第一反应就是找第K大的数。然后把所有大于等于第k大的数取出来。写这个知道算法的代码都花了2个多小时,反思,太慢了。 注意边界条件,不要混混沌沌的。/************我自己的解法*****...
转载
2014-10-21 17:08:00
79阅读
2评论
在一个数组中寻找最大的K个数,我们首先说一种非常简单的方法,利用快速排序中的分割算法,即我们经常看见的partition。这个函数会返回一个 int 类型的值,这个值代表的是前一半数字和后一半数字的分割点,前一半数字都小于等于后一半数字(递增排序),所以,我们只要找到相对应的分割点,即可以找到最大的K个数,或者最小的K个数,这就是利用线性方法可以完成任务的
原创
2023-05-11 21:31:19
97阅读
这是一道经常被人们忽视的题,因为我想会写冒泡排序的人应该都会做这一道题。先给这N个数来一个排序若是求最大的K个数就从大到小排序,若是求最小的数就从小到大排序,然后来一个循环输出前K个数就行了。好像是很简单,但大家没有想到的是,当数非常之多的时候,排序的效率就很低了,所以得想另外的方法。
此题完全可以用堆的特性来
原创
2011-11-16 23:29:44
1158阅读
N个数中找出最大的前K个数,需要用小堆实现。分析:由于小堆的堆顶存放堆中最小的数据,可以通过与堆顶数据进行比较,将大数据存放在堆中,注意在每次改变堆顶数据后,进行调堆,使堆顶一直存放整个堆中最小元素。void AdjustDown(int *a, size_t root, size_t size)//下调
{//小堆
size_t&nb
原创
2016-05-02 22:36:50
2667阅读
题目描述:有很多无序的数,姑且家丁它们各不相等,怎么选出其中最大的若干个数呢?这里我不想去写一些很没有意义的思路。神马先排序取前k个这种弱爆了并且一点也不适用的思想我就不想废话了,因为如果数据量很大的时候,对所有数据排序肯定是费力不讨好的事情,换换思路,不能全部排序,那就部分排序吧!这里介绍两个比较实用的。当然为了有点递进关系,先来一个比较差一点的方法。如果对排序算法还不是很熟悉的,可以参考博客
转载
2013-05-01 12:29:00
77阅读