位圖排序:從1億個數字中取出最大的100個

package com.zetyun.test;import java.util.Random;public class Top100 {    public static int[] getTop100(int[] inputArray) {        int maxValue = Integer.MIN_VALUE;        for (int i = 0; i < inputArray.length; i++) {            if (maxValue < inputArray[i]) {                maxValue = inputArray[i];            }        }        byte[] bitmap = new byte[maxValue+1];        for (int i = 0; i < inputArray.length; i++) {            int value=inputArray[i];            bitmap[value] = 1;        }        int[] result = new int[100];        int index = 0;        for (int i = maxValue; i >= 0 & index < 100; i--) {            if (bitmap[i] == 1) {                result[index++] = i;            }        }        return result;    }    public static void main(String[] args) {        int numberCount = 100000000;        int maxNumber = numberCount;        int inputArray[] = new int[numberCount];        Random random = new Random();        for (int i = 0; i < numberCount; i++) {            inputArray[i] = Math.abs(random.nextInt(maxNumber));        }        System.out.println("Sort begin...");        long current = System.currentTimeMillis();        int[] result = Top100.getTop100(inputArray);        System.out.println(System.currentTimeMillis() - current);        for (int i = 0; i < result.length; i++) {            System.out.print(result[i] + ",");        }    }}
相關文章
相關標籤/搜索