今天学习Java第三天,听到了一道算法题,正好刚学到数组,随便写了一下。大神看看有什么不够好的地方。题目大概就是有一百万个人的年龄,怎样最快速度从小到大排序。
package com.itblackcat; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Arrays; public class ExampleCount02 { public static void main(String[] args) { int[] counts = new int[1000000]; SecureRandom random = null; try { random = SecureRandom.getInstance("SHA1PRNG"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } //遍历 for (int i = 0; i < 1000000; i++) { // 生成 0-100 随机整数 int number = random.nextInt(100); // 检查随机数 // System.out.println("生成随机数:" + number); //写进数组 counts[i] = number; } //检查数组 // System.out.println(Arrays.toString(counts)); int[] num = new int[100]; //去遍历描述原数组 for(int i = 0;i<counts.length;i++){ num[counts[i]]++; } // System.out.println(Arrays.toString(num)); int[] newNums = new int[counts.length]; int index = 0; for (int i = 0;i<num.length;i++){ for (int j = 0;j<num[i];j++){ //还原数组 newNums[index++] = i+1; } } counts = newNums; System.out.println(Arrays.toString(counts)); } }