zoukankan      html  css  js  c++  java
  • 位图排序

    位图排序: 适合数量较多的整数集合排序。

    原理  定义位组,如果整数i存在,则将位组的第i位置为1,以记录其存在。然后位组遍历,确定排序。

    Code

      

     1 import java.io.*;
     2 import java.util.*;
     3 public class Main {
     4     
     5     
     6 public static void main(String[] argc) throws IOException{
     7 
     8         Main test = new Main();
     9         String largeFileName = "d:\File_test\old.txt";
    10         String destlargeFileName = "d:\File_test\new.txt";
    11         test.perform(largeFileName, 100, destlargeFileName,true);
    12 }
    13     
    14 
    15 private BitSet bits;
    16 public void perform( String largeFileName,int total, String destLargeFileName,boolean asc) throws IOException {
    17 System.out.println("BitmapSort Started.");
    18  long start = System.currentTimeMillis();
    19  bits = new BitSet(total);
    20  FileWriter fw=new FileWriter(new File(destLargeFileName));
    21  BufferedWriter  largeOut=new BufferedWriter(fw);
    22  File fr = new File(largeFileName);
    23  BufferedReader largeIn = new BufferedReader(new FileReader(fr));
    24  
    25 // OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8");
    26 //BufferedWriter  bw=new BufferedWriter(osw);
    27  Integer data;
    28  int off = 0;
    29  try {
    30  while (true) {
    31  String Data = largeIn.readLine();
    32  if (Data == null)
    33  break;
    34  data = Integer.parseInt(Data);
    35  int v = data;
    36  set(v);
    37  off++;
    38  }
    39  largeIn.close();
    40  int size = bits.size();
    41  System.out.println(String.format("lines : %d ,bits : %d", off, size));
    42  if(asc) {
    43      for (int i = 0; i < size; i++) {
    44      if (get(i)) {
    45          largeOut.write(String.valueOf(i)+"
    ");
    46          largeOut.write("	
    ");
    47      }
    48      }
    49  }
    50  largeOut.close();
    51  long stop = System.currentTimeMillis();
    52  long elapsed = stop - start;
    53  System.out.println(String.format("BitmapSort Completed.elapsed : %dms",elapsed));
    54  }
    55  finally {
    56  largeIn.close();
    57  largeOut.close();
    58      } 
    59  }
    60 
    61 private void set(int i) {
    62  bits.set(i);
    63  }
    64 private boolean get(int v) {
    65  return bits.get(v);
    66  }
    67 }
  • 相关阅读:
    hdu 5916
    hdu 5918
    hdu 5914 Triangle
    hdu 5912Fraction
    遗传算法初学习
    hdu 5873 Football Games
    JAVA 定时器的三种方法
    java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
    Eclipse设置Tab键缩进4个空格的步骤,也就是按一下Tab键输出四个空格
    Nginx 相关介绍(Nginx是什么?能干嘛?个人觉得写得比较好的文章,转载过来)
  • 原文地址:https://www.cnblogs.com/udld/p/4667921.html
Copyright © 2011-2022 走看看