// 7자리 양의 정수 랜덤 생성 import java.io.*; import java.util.*; public class Number { public static void main(String[] args) { int k = 1000000; // 만들 숫자 갯수 int n = 7; // 몇자리 세팅 BitSet bitSet = new BitSet(k); // 정렬을 위한 비트셋 bitSet.clear(); // 비트셋 초기화 false 세팅 int kn = (int)((Math.pow(10,n)-1)-(Math.pow(10,n-1)-1)); // 자리수에 맞는 범위값, Math.pow : 제곱 구하기 try { File file = new File("randomNumber.txt"); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); int l = 0; while ( l < k ) { int m = (int)(Math.random()*kn+(Math.pow(10,n-1))); if ( !bitSet.get(m) ) { bitSet.set( m, true ); writer.write(Integer.toString(m)); writer.newLine(); l++; } } writer.close(); } catch (IOException ex) { ex.printStackTrace(); } } } |
import java.io.*; import java.util.*; public class BitmapSort { public static void main(String[] args) { int[] num = new int[1000000]; // 데이터를 넣을 배열 생성 BitSet bitSet = new BitSet(10000000); // 정렬을 위한 비트셋 bitSet.clear(); // 비트셋 초기화 false 세팅 try { File myFile = new File("randomNumber.txt"); BufferedReader reader = new BufferedReader(new FileReader(myFile)); // 데이터 파일 읽기 int j=0; String line = null; while ( (line = reader.readLine()) != null ) { StringTokenizer tokenizer = new StringTokenizer(line); num[j] = Integer.parseInt (tokenizer.nextToken() ); bitSet.set(num[j], true); // num[j] 의 값이 bitSet 의 인덱스로 j++; } reader.close(); File file = new File("sortedNumber.txt"); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); // 파일 출력 for ( int k=0 ; k<bitSet.length() ; k++ ) { writer.write(Integer.toString(k)); writer.newLine(); } } writer.close(); } catch (IOException ex) { ex.printStackTrace(); } } } |