-
一个TXT文件中包含百万数字,每个数字一行,请从中选出最大的十个数. 这是一道java面试题。10
这是一个java面试题,
不太会,就蒙头写了一个。如下:
读出来,分组每1000个选10个,1000次。
不知道靠不靠谱,
请指点,多谢!2013年3月14日 21:18
14个答案 按时间排序 按投票排序
-
采纳的答案
同意502220545说的使用数组,只是不需要再进行排序,只需要再定义一个变量保存数组中最小的一个数,每读取一个数据就与这个最小的数进行对比,如果大于这个最小的数,那么将数据中等于最小数的一个数据替换为刚刚读出的数,然后再从数组中得到最小的数更新到最小数的变量中,然后继续循环,这样就可以省掉比较数组和排序的工作了。
public static void main(String args[]) {
try {//暂且不考虑文件是否存在以及文件内容是否正确的问题
BufferedReader br=new BufferedReader(new FileReader("D:/Test.TXT"));//读取文件
int min=0,num=0;//最小值和当前值
int[] big=new int[10];//最大值数组
for(int i=0;i<10;i++) {//初始化数组
big[i]=Integer.parseInt(br.readLine());
}
min=getMin(big);//得到最小值
for(String s=br.readLine();s!=null;s=br.readLine()) {//遍历文件所有的数值并更新big数组
if(s.equals(""))continue;
num=Integer.parseInt(s);
if(min<num) {//如果当前值大于big数组中的最小数值
replace(big,min,num);//将当前值替换掉数组中的一个最小的数值
}
}
br.close();//关闭
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将数组中等于 min的一个数值替换为big
*/
public static void replace(int[] arr,int min,int big) {
for(int i=arr.length-1;i!=-1;i--) {
if(arr[i]==min) {//找到符合条件的数值,并替换
arr[i]=big;
break;
}
}
}
/**
* 得到数组中最小的数值
*/
public static int getMin(int[] arr) {
int min=arr[0];
for(int i:arr) {
if(min>i) {
min=i;
}
}
return min;
}2013年3月15日 11:16
-
我觉得用脚本来实现这个比较快捷。
我可以先定义 一个数字 , 比如说是50, 数字字符长度超过50的 我输出到一个新的TXT里面去。
如果数据超过10个了,我就在新文本里面继续做排序。
如果小于10个,我就把这个50数字改小点重新读取一次TXT。2013年3月15日 14:51
-
mapreduce
多线程 用RandomAccessFile把文件分块,获取每块文件的最大10个数,然后再统计出所有块中最大的10个数2013年3月15日 11:46
-
1楼所说基本正确,文件以流的方式读入内存,不管多大的文件都不会消耗很多内存,每次读入的数字和原来的数字对比,保留最大的十个即可。
我估计算法使用的总时间几乎和读取一次这个文件的时间一致,因为10个数字排序消耗的时间和IO操作相比几乎可以忽略不计。2013年3月15日 09:56
-
一点拙见:
1.读取 每行 用固定的字节数 这样应该不会有内存溢出的问题
2.然后用一个10个长度的数组 存取 取出一个 插入一个 按升序排序
3. 当取出第11个的时候 和数组中的数据比较 插入适当的位置2013年3月15日 09:21
相关推荐
给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 编程任务:对于给定的由n 行数字组成的数字三角形,编程计算从三角形的顶至底...
从1到x这x个数字中选出n个,排成一列,相邻两数不能相同,求所有可能的排法
只用三行代码就从一千个数字随机选出了一百个不同的数字!
4. 使用 java.lang.Math 类,生成 100 个 0---99 之间的随机整数,找出他们之中的最大值和最小值,并统计大于 50 的整数个数。 知识点:Java 基础知识、java.lang.Math 类、数组、循环语句、条件语句 本题目考察了...
输入格式包括序列长度 n、序列元素和询问个数 m,每个询问包含三个数 l、r 和 K。输出格式为每个询问的答案。 该题目考查了排序和查找算法,要求使用 Java 语言实现解决方案。 Java 参考代码使用了 ...
10. 有个数组 a[100]寄存了 100 个数,这 100 个数取自 1-99,且只有两个相似旳数,剩余旳 98 个数不一样,写一种搜索算法找出相似旳那个数旳值。(注意空间效率时间效率尽量要低)。 知识点:搜索算法、数组操作。 ...
53. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 13 54. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 13 55. java中有几种类型的流?...
Q1063720.zip 从1~16这16个数字中选出6个数字使其相加和为45 https://ask.csdn.net/questions/1063720
2.最大和最小值的求解:编写程序,接收用户从键盘上输入的三个整数 x,y,z,并从中选出最大和最小者。该题目涉及到 Java 的输入输出、数组、条件语句等知识点。 在 Java 中,可以使用 Scanner 类来接收用户的输入,...
SpringCloud 相关面试题 SpringCloud 是一种基于 Java 的微服务架构框架,它提供了很多功能强大的组件来帮助开发者快速构建微服务系统。在本文中,我们将详细介绍 SpringCloud 的一些核心概念和面试题。 为什么...
3. 请你从 1~100 中选出 12 个数填入下图的圆圈里,使得每个数均为与它相邻的两个数的最大公约数或最小公倍数。 这道题考查学生的数论知识和逻辑思维能力。解决方法是:首先,需要选出12个数,然后根据最大公约数和...
5. 数据库〔10〕a tabel called “performance”contain :name and score,please 用 SQL 语言表述如何选出 score 最 high 的一个〔仅有一个〕 这个问题考察了数据库的基本操作和数据分析能力。题目要求选出score...
定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:CD A double a=1.0; A private class MyClass extends Object B class MyClass extends Object C ...
数字三角形.-动态规划,思路新颖易懂
在本文中,我们将对SQL数据库经典面试题修改笔试题进行总结,涵盖了数据库抽出部门、平均工资、字符串顺序排序、最小值、每个Customer的Revenue总和、选出score最高的一条记录等多方面的知识点。 一、数据库抽出...
从n个数组中取出所有排列组合(Java实现)
多项选择题在每小题的五个备选答案中选出二至五个正.pdf
在腾讯算法面试题中,要求选出64匹马中最快的四匹,需要使用排序算法来解决这个问题。排序算法是计算机科学中的一种算法,用于对一组数据按照特定的顺序进行排序。排序算法的应用场景非常广泛,在数据分析、机器学习...
简单来说,K就是邻居个数,选出和测试样本最像的邻居(这里是欧式几何距离最短的K个邻居),那么样本的邻居是什么,样本就是什么(在K个邻居里,假如邻居的标签最多的是数字1,我们就认为样本的标签就很可能是数字1...
找出若干个数使其和最接近于M 1. 题目 给定一个由正数组成的列表alts,一个目标数M 需要从alts中选取若干个备选数,使其和为M 若找不到和刚好与M相等的备选数列表,则返回和与M最接近的备选数列表 若有多个结果,...