程序实现自动生成1000万个从1000万到1亿之间的随机数写入到文件中,然后对这些数进行从小到大排序写入到新的文件中。
核心思想:用一个很大的数组来记录随机数出现的次数,然后直接输出这个基数器的序号即为排序结果。
private static final int SIZE = 10000000;//随机数数量
private static final int START = 10000000;//随机数开始值
private static final int END = 89999999;//随机数增量
private static final String DIR = "e:/test/";
public static void main(String[] args) throws Exception{
long time = System.currentTimeMillis();
createTestData();
System.out.println("耗时:"+(System.currentTimeMillis() - time));
time = System.currentTimeMillis();
sort();
System.out.println("耗时:"+(System.currentTimeMillis() - time));
System.out.println("完成!");
}
private static void sort()throws Exception{
System.out.println("初始化排序数组...");
int[] record = new int[END+1];
for(int i = 0;i<record.length;i++){
record[i] = 0;
}
File file = new File(DIR+"test.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while((line = br.readLine())!=null){
record[Integer.parseInt(line) - START] += 1;
}
br.close();
System.out.println("正在排序...");
File file2 = new File(DIR+"test-result.txt");
if(!file.exists()){
file.createNewFile();
}
BufferedWriter bw = new BufferedWriter(new FileWriter(file2,true));
int i = START;
for(int r : record){
if(r>=1){
for(int j = r;j>0;j--){
bw.write(i+(r>1?" <---":""));
bw.newLine();
}
}
i++;
//System.out.println("i="+i);
}
bw.close();
}
private static void createTestData()throws Exception{
Random r = new Random();
File file = new File(DIR+"test.txt");
if(!file.exists()){
file.createNewFile();
}
System.out.println("正在生成随机数...");
BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));
for(int i = 0;i<SIZE;i++){
bw.write(START+r.nextInt(END)+"");
bw.newLine();
//System.out.println("i="+i);
}
bw.close();
}
分享到:
相关推荐
编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码
我觉得不错,和大家分享! 编程珠玑 编程珠玑 编程珠玑
编程珠玑编程珠玑
编程珠玑和编程珠玑续两本,上传赚点分,填充填充填充
《编程珠玑(续)》是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容组成一个有机的整体,...
这是《编程珠玑》上用Java实现的源代码,只有几章,其中第一章则较完整把几种方法如位图、归并排序等都实现了。
如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数关联。 输出:按升序排列的输入整数列表。 约束:最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,...
编程珠玑续、编程珠玑续本、编程珠玑续本、编程珠玑续本
编程珠玑2(中文)
编程珠玑,编程珠玑续以及源码,本书针对程序设计人员探讨了一系列的实际问题,这些问题是对现实中常见问题的归纳总结。作者虽然没有给出解决这些问题的具体代码,但始终非常富有洞察力和创造力地围绕着这些折磨...
编程珠玑源代码还有课后习题代码,官方版本
《编程珠玑》第一版是我早期职业生涯中阅读过的对我影响较大的书籍之一,在书中首次接触到的很多观点都让我长期受益。作者在这一版本中做了重要更新。新增加的很多例子让我耳目一新。 ——Steve McConnell,《代码...
编程珠玑+续
编程珠玑是一本提升coding能力不可多得的好书,看书时,可以结合这个笔记,突出重点。
编程珠玑英文原版,中文非扫描版带目录,和中文扫描版
编程珠玑II(编程珠玑·续) 扫描版6.56M pdf格式
这本书是《编程珠玑》高清pdf,如有侵权请告知。
编程珠玑.pdf 面试必备,算法必备,各种算法的精彩解析
编程珠玑