zoukankan      html  css  js  c++  java
  • 位图排序:从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] + ",");
    }
    }
    }
  • 相关阅读:
    CSS 定位position
    new Date(time).getTime()在ios返回NaN
    babel.js 文件 browser.min.js
    export 和 export default 的区别
    第一个webpack例子demo1
    Kafka源码解析与实战
    Redis实战
    RabbitMQ实战
    Spring源码理解
    Java并发编程实践
  • 原文地址:https://www.cnblogs.com/jiang-it/p/8930573.html
Copyright © 2011-2022 走看看