题目:给出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评论
# 寻找最大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阅读
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这道题是一道非常经典的题目, top k 因此解法也
解法一:假设元素的数量不大,用快排或堆排序都是不错选择,平均时间复杂度都是O(N*log N)。然后取出前K个,O(K
原创 2023-06-13 10:30:33
54阅读
问题描写叙述:求一个数组的最大k个数。如,{1,5,8,9,11,2,3}的最大个数应该是,8,9,11 问题分析: 1.解法一:最直观的做法是将数组从大到小排序,然后选出当中最大K个数。可是这种解法,复杂度是O(logn*n),可是有时候并不须要排序,用简单的选择排序。或者是冒泡排序,那么就K
转载 2017-07-09 15:23:00
128阅读
这里是整理后的代码:import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import com.dm.core.structure.tupler.StrDoubleTuple;/** * 最大堆,用作优先队列的TOPK查找 * 原理:每个节点的
在大量数据中找出最大或者最小的K个数
原创 2016-04-04 23:27:03
629阅读
1点赞
#include#includevoid bubbleSort(int arr[],int n){ int i,j; for(i=n-1;i>0;i--) for(j=n-2;j>=n-i-1;j--) { if(arr[j+1]>arr...
转载 2014-06-16 14:17:00
93阅读
2评论
         这是一个很常见的算法问题,从一组数中选出最大K个。 《编程之美》上也有这个问题的一些解法。其中,一种较好的解法就是利用有序队列(如JAVA中的PriorityQueue),主要的算法思路如下: 先从第一个数开始,依次入队k个数,此时,有序队列以对这k个数排序完成,按照从小(队列首)到大
原创 2010-02-20 13:17:21
855阅读
# 如何实现“java 判断哪个数最大” ## 一、流程图 ```mermaid erDiagram 数据输入 --> 逻辑判断 --> 结果输出 ``` ## 二、步骤表格 | 步骤 | 操作 | | --- | --- | | 1 | 接收用户输入的三个数 | | 2 | 比较这三个数的大小 | | 3 | 输出最大的数 | ## 三、具体步骤 ### 步骤1:接收用户输入
原创 2024-03-26 05:01:50
43阅读
   拿到这个题目我想到了很多方法,但是在我想到的方法中,要把在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阅读
编程之美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评论
有若干个互不相等的无序的数,怎么选出其中最大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个数,需要用小堆实现。分析:由于小堆的堆顶存放堆中最小的数据,可以通过与堆顶数据进行比较,将大数据存放在堆中,注意在每次改变堆顶数据后,进行调堆,使堆顶一直存放整个堆中最小元素。void AdjustDown(int *a, size_t root, size_t size)//下调 {//小堆 size_t&nb
原创 2016-05-02 22:36:50
2667阅读
  • 1
  • 2
  • 3
  • 4
  • 5