100亿行数据存在文件中,每行数据有一个数字,提取前100个最大数字,怎么搞?

假设:100亿行数据存在文件中,每行数据有一个数字,提取前100个最大数字,怎么搞? (PHP+mysql实现 思路即可)

1

1个回答

用mysql数据库,那你直接把数据插入数据库好了,然后select的时候order排序。limit 100来限制

不过你有100亿,数据库可能支持不了,可以用小根堆的数据结构,遍历所有数字,然后比较插入。

-1
u013595949
Spiderman11122 最后半句没看懂- - 刚入行的程序 只会PHP 昨天听群里人问的 突发奇想 想了解下怎么样弄
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java一亿数字取前100个(3秒钟获取)
java一亿数字取前100个(3秒钟获取) 速度非常快。 发出来给大家分享
100亿个数字找出最大的10个
1、首先一点,对于海量数据处理,思路基本上是确定的,必须分块处理,然后再合并起来。 2、对于每一块必须找出10个最大的数,因为第一块中10个最大数中的最小的,可能比第二块中10最大数中的最大的还要大。 3、分块处理,再合并。也就是Google MapReduce 的基本思想。Google有很多的服务器,每个服务器又有很多的CPU,因此,100亿个数分成100块,每个服务器处理一块,1亿...
100亿数据找出最大的1000个数字
100亿数据找出最大的1000个数字
在存有10亿个数的文件中找到最大的100万个数
这是《编程珠玑》中的一道题目。10亿个整数,假设每个整数需要四个字节,如果使用排序的话,需要大约4G的内存,现在的很多pc都没有多这么内存,更不用说作者那个年代。 我们借助最小堆来解决这个问题。 主要步骤: 一、使用一个大小为一百万零一的整数数组来构建堆(堆的下标从1开始) 二、从文件中读取前一百万个数,每读入一个数,调用函数,保持其最小堆的性质,堆的根永远是堆中最小的元素。 三、从一百
从1亿个数字中取出最大的100个数字- 位图排序(空间换时间)
/* *一个排序算法题:从1亿个数字中取出最大的100个 *装逼宝典:位图公式 bitmap[arr[i]]=1; 将传统数组转换为位图数组就完成了排序!!! * *什么是位图?答:构建公式:bitmap[arr[i]]=1; 其中arr是我们的传统数组,bitmap是位图数组。 *位图长度多少?答:bitmap.length=arr[i].maxValue; 因为位图数组基于传
10亿数据中取最大的100个数据
思路1:根据快速排序划分的思想 (1)递归对所有数据分成[a,b)b(b,d]两个区间,(b,d]区间内的数都是大于[a,b)区间内的数 (2)对(b,d]重复(1)操作,直到最右边的区间个数小于100个。注意[a,b)区间不用划分 (3)返回上一个区间,并返回此区间的数字数目。接着方法仍然是对上一区间的左边进行划分,分为[a2,b2)b2(b2,d2]两个区间,取(b2,d2]区间。如果
[原创]从1亿个数据中找出前100个最大值
从一亿个数据中找出前100个最大值 方法一: > 新建一100个红黑树节点,将输入前100个保存进去,然后全部插入红黑树T > 遍历剩下的所有输入,对每一个输入值,如果值大于红黑树中最小值,则删除最小值节点,然后修改被删除节点的值为当前输入,然后插入红黑树。 复杂度为n*lg(m), n为输入数据条数,m为输出数据条数 方法二:将红黑树替换成最小堆,每插入一条数据,只需要运行...
从一亿个数中找出最大的100个 或者n个
从一亿个数中找出最大的100个 或者n个 用了个堆
100亿个数字中找出最大的10个
100亿个数字找出最大的10个 1、首先一点,对于海量数据处理,思路基本上是:必须分块处理,然后再合并起来。 2、对于每一块必须找出10个最大的数,因为第一块中10个最大数中的最小的,可能比第二块中10最大数中的最大的还要大。 3、分块处理,再合并。也就是Google MapReduce 的基本思想。Google有很多的服务器,每个服务器又有很多的CPU,因此,100亿个数分成100块,
获取一亿数据获取前100个最大值
获取一亿数据获取前100个最大值
算法2— 一亿数据获取前100个最大值
刚刚在CSDN上看到一个网友利用最小堆实现 “ 获取一亿数据获取前100个最大值” 。然后自己利用quicksort的原理也写了一个程序来解决那个问题。通过测试,基于quicksort原理的方法平均运行时间是1.264秒,基于最小堆方法的平均运行时间是0.288秒 (网友写的程序运行时间比我的大很多,0.288秒这个程序是我自己写的,如果测试网友写的基于minHeap的方法,运行时间是2.501秒
通过堆排序从1亿个数中找到最小的100个数
package com.my.util; import java.util.Arrays; import java.util.Date; import java.util.Random; public class Top100 { public static void main(String[] args) { find(); } public static void find(
海量数据中找到最大的100个数Java版
//维持一个容量为100的小顶堆 public static int[] getTheMaxNums(int[] a){ int[] result = new int[100]; for(int i = 0;i<100;i++){ result[i] = a[i]; } int len = result.length; for(int...
一个文本文件中约有10万多行的数据,每个数据占一行(数据为一个整数)。要求:统计出总行数,并找出出现次数最多的那个整数。
 基本思路就是:首先读取数据,因为一行只有一个数据,所以在读取的过程中可以完成两个步骤,1,数据量的计算,每读取一行,count++ ,同时把数据存储到一个链表中,然后把链表转换为数组,利用Arrays的静态方法sort()完成数组的排序最后根据排序好的数组计算哪个数出现的最多最后输出类numSum可以简单的看作一个结构主要是存储一个整数和该整数出现的次数完全可以用两个变量代替import jav
Java深入---百万数据提取最大的前一百个数据
package BigData; import java.io.*; import java.util.PriorityQueue; import java.util.Queue; public class FileTest { public FileTest() { } public static void main(String[] args) { // madeData();
1亿条数据中获取最大100条,论坛找来的代码TreeSet 和另外一种方法
[code="java"] import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import java.util.Set; import java.util.TreeSet; class TreeSF { ...
100亿条记录的文本文件,取出重复数最多的前10条
http://www.oschina.net/question/163919_61165?sort=time&#answers
100亿个32位整数中放到一个文件中,找出任一个重复出现的数
问题描述是这样的: 在一个文件中存放有100亿个整数,
从100亿个整数中找出最大/最小的1000个整数
一句话总结:内存无法装下,用比较速度最快的数据结构。 先找最大的1000个整数 1、内存无法装下:先取出1001个整数,构建一个最小堆,堆顶永远是最小的整数。 2、比较:从剩余的整数中一次取出一个,跟最小堆堆顶相比,如果比堆顶小,就pass掉,接着取;如果比最小堆堆顶大,那么将之替换掉堆顶,然后调整最小堆 3、结果:100亿个整数全部操作完后,抛开堆顶,剩下的1000个就是最大的1000个
从100亿条记录的文本文件中取出重复数最多的前10条
场景哈希分治法 这是一个 ip 地址 127.0.0.1 假设有100亿个这样的 ip 地址存在文件中 这个文件大小大约是 100GB 问题:要统计出100亿个 ip 中,重复出现次数最多的前10个分析100GB 几乎不可能一次加载进内存进行操作,所以必须要拆分 那么可以利用分治的思想,把规模大的问题化小,然后解决各个小的问题,最后得出结果。实现思路 ipv4 地址是一个 32 位的整数,
从1亿个数里面找出前100个最大的
从1亿个数里面找出前100个最大的 这个题目应该是一些大公司面试题中经常被问到的,这里我给出一种做法,至于面试官满不满意我就不知道了。我们知道,这种找出前多少个最大或者最小的最适合用堆排序(对堆排序不熟悉的读者可以参考为的这篇博客:堆排序)。但是如果我们用1亿个数去建堆并调整,当然时间复杂度是不允许的。题目中要求前100个大的,那么我们就只用100...
《算法导论》学习之关于如何利用排序算法,从1亿个数中,选出最大(小)的100个数
首先声明:本文内容是参考别人的博客,链接为:http://blog.csdn.net/beiyeqingteng/article/details/7534489 前言: 刚刚在CSDN上看到一个网友利用最小堆实现 “ 获取一亿数据获取前100个最大值” 。原帖请看:http://blog.csdn.net/yjflinchong/article/details/7533972。
100亿个数中找出最大的前K个数(海量TopK问题)
对于这个问题,可以有以下思考: 给了多少内存存储这100亿个数据? 先思考:堆排序效率是nlogn,再思考:可以将这些数据切成等份,再从每一份中找出最大前k个数据,但是效率不高。那如果利用堆的性质呢? 小堆堆顶元素最小,先将前k个数建成小堆,那么堆顶元素就是最小的,k+1的数依次与堆顶元素进行比较,如果大于,则K+1与堆顶元素交换,依次循环直至所有数据全部比较完,那么这个堆里存放的是最大的前...
10亿个数中找出最大的10000个数之top K问题
    方法一、先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000)。    方法二(优化的方法):可以把所有10亿个数据分组存放,比如分别放在100...
一亿数据获取最大值的前100位
两种思路: 1. 根据快速排序划分的思想  a. 假设数组为 array[N] (N = 1 亿),首先利用quicksort的原理把array分成两个部分,左边部分比 array[N - 1] (array中的最后一个值,即pivot) 大, 右边部分比pivot 小。然后,可以得到 array[array.length - 1] (即 pivot) 在整个数组中的位置,假设是 k.
100亿个数取出最大的10000个
题目:100亿个整数,求最大的1万个数,并说出算法的时间复杂度  算法:如果把100亿个数全部读入内存,需要100 0000 0000 * 4B 大约40G的内存,这显然是不现实的。  我们可以在内存中维护一个大小为10000的最小堆,每次从文件读一个数,与最小堆的堆顶元素比较,若比堆顶元素大,  则替换掉堆顶元素,然后调整堆。最后剩下的堆内元素即为最大的1万个数,算法复杂度为O(NlogN)  
海量数据处理:有1亿个浮点数,找出其中最大的10000个
第一种方法是将数据全部排序,然后在排序后的集合中进行查找,最快的排序算法的时间复杂度一般为O(nlogn),例如快速排序.而在32位机器上,每个float类型占4B,1亿个浮点数就要占用400M的存储空间,对于一些可以内存小于400MB的计算机而言,显然是不能一次将全部数据读入内存进行排序的.其实即使内存能满足要求,该方法也不高效,因为题目的目的是寻找出最大的10000个数即可,而排序是将所有元素...
从100万个数中找出最大的前100个数
https://blog.csdn.net/cslbupt/article/details/65935577 1.算法如下:根据快速排序划分的思想 (1) 递归对所有数据分成[a,b)b(b,d]两个区间,(b,d]区间内的数都是大于[a,b)区间内的数 (2) 对(b,d]重复(1)操作,直到最右边的区间个数小于100个。注意[a,b)区间不用划分 (3) 返回上一个区间,并返回此区间的数字数目...
100G的大文件中找出100个最大的数
题目:有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。程序:   public class Pick100 { //TreeSet排序效率最高 private TreeSet<Double> treeSet = null; public Pick100(){ ...
数据结构与算法——有1亿个整数,找出最大的1000个,要求时间越短越好,空间占用越少越好
数据结构与算法——有1亿个整数,找出最大的1000个,要求时间越短越好,空间占用越少越好(最小堆实现)
百度面试题:在100w个数中找最大的前100个数
在100w个数中找最大的前100个数 答案在文章评论部分,请注意查看:) 原文网址:http://hi.baidu.com/mianshiti/blog/item/37652f27a3ac4320d5074252.html -----------------
从100万个整数里找出100个最大的数
<br />100万个整数里找出100个最大的数(用哪种算法效率高) <br /><br />以下为可能性最大的答案:<br />部分排序?找出一个支点,把数组分为左右,一直分... <br />可以参考一下STL中nth_element的实现吧。<br />选择第k大数有O(n)的算法,过程衍生自快排<br />呵呵我看懂啦,是个好算法!顶! <br />取前100个数排序,放入链表中.依次取后面的数与100个数的最小数比较,若取到的数比最小数大,则插入链表中,同时挤掉最小的数.这个过程中使用的链表,因为
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。         先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆
100亿个整数,找出中位数
100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数? (1)当内存足够时:采用快排,找到第n大的数。 • 随机选取一个数,将比它小的元素放在它左边,比它大的元素放在右边 • 如果它恰好在中位数的位置,那么它就是中位数,直接返回 • 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理(还是第几大) • 否则中位数一定在右半边,根据左半边的元素个数
100亿个数中找出最大的前K个数(海量数据topK问题)
分析:海量数据topK问题,在我们日常生活中应用非常广泛,比如微信的计步软件,它就是topK问题,统计出前K名,然后进行排序。那如何解决这个问题呢?我们用堆可以很好的解决这个问题。我们先用前K个数建立一个大堆/小堆(找最大前K个数用小堆,找最小前K个数用大堆,因为:如果找最大前K个数,我们建立一个大堆的话,我们需要用第N-K-1个数与堆顶元素比较,如果它比堆顶元素小我们就要舍弃它,但如果它比堆顶元...
从一亿个数中找出最大的一万个数
问题定义:         从一亿个数中找出最大的一万个数 不假思索:         拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来。原因很简单,如果要找最大的那个数,就是这样解决的;而找最大的一万个数,只是重复一万遍。这个解法类似于选择排序,一次将一个正确解放在合适的位置,重复一万次,所以时间复杂度为O(n *m),如果你
100G的大文件中找出最大的100个数
 前段时间看到“100G的大文件中找出最大的100个数"。所以写下这篇文章。 转载请注明出处   作者: 黎承湘 要求 : 有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。        源贴http://topic.csdn.net/u/20091013/10/d5d371dc-6dec-4034-bf31-43
【面试必备】如何在10亿数中找出前1000大的数?
作者:channingbreeze | 微信公众号:互联网侦察小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司...
在一堆很大的数中取出最小的前100个数
题目大意是:有很多很多数,
从一亿个数据里找前N个最大的数----算法源码
从一亿个数据里找前N个最大的数----算法源码,这里仅是思路之一的源码,更多详解和思路,请查看: 个人博客:http://blog.csdn.net/yanzi1225627 或:http://www.eyeandroid.com/thread-9596-1-1.html
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python教程100 成都100产品经理培训