Advertisement
SunnyKwak

SortRandomNumber

Apr 23rd, 2016
3,484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.95 KB | None | 0 0
  1. class LapTimeInfo {
  2.     private String tag;
  3.     private long lapTime;
  4.  
  5.     public LapTimeInfo(String tag, long lapTime) {
  6.         this.tag = tag;
  7.         this.lapTime = lapTime;
  8.     }
  9.  
  10.     public void printOut() {
  11.         System.out.format("%s: %d ms\n", tag, lapTime);
  12.     }
  13. }
  14.  
  15.  
  16. import java.util.*;
  17.  
  18. class SortRandomNumber {
  19.  
  20.     final static int INPUT_COUNT = 1000000;
  21.     static long checkpointMilliTime;
  22.     static List<LapTimeInfo> lapTimeList = new ArrayList<LapTimeInfo>();
  23.  
  24.     public static void main(String args[]) {
  25.  
  26.         checkpointMilliTime = System.currentTimeMillis();
  27.  
  28.         /*
  29.         Scanner input = new Scanner(System.in);
  30.         int num = input.nextInt();
  31.         int[] a = new int[num];
  32.         int[] b = new int[num];
  33.  
  34.         for (int i = 0; i < num; i++) {
  35.             a[i] = input.nextInt();
  36.         }
  37.         */
  38.         int[] inputNumbers = new int[INPUT_COUNT];
  39.         int[] outputNumbers = new int[INPUT_COUNT];
  40.         for(int i=0; i<INPUT_COUNT; i++) {
  41.             inputNumbers[i] = (int)(Math.random() * INPUT_COUNT);
  42.         }
  43.  
  44.         markLapTime("Input numbers");
  45.        
  46.         countingSort(inputNumbers, outputNumbers, INPUT_COUNT);
  47.         markLapTime("Counting Sort");
  48.        
  49.         printOutput(INPUT_COUNT, outputNumbers);
  50.         markLapTime("Print Output");
  51.        
  52.         for(LapTimeInfo lapTimeInfo :  lapTimeList) {
  53.             lapTimeInfo.printOut();
  54.         }
  55.     }
  56.  
  57.     private static void markLapTime(String tag) {
  58.         lapTimeList.add(new LapTimeInfo(tag, System.currentTimeMillis() - checkpointMilliTime));
  59.         checkpointMilliTime = System.currentTimeMillis();
  60.     }
  61.  
  62.     private static void printOutput(int num, int[] b) {
  63.         for (int i = 0; i < num; i++) {
  64.             System.out.println(b[i]);
  65.         }
  66.     }
  67.  
  68.     public static void countingSort(int a[], int b[], int num) {
  69.         int k = 2000001;
  70.         int c[] = new int[k];
  71.         for (int i = 0; i < k; i++) {
  72.             c[i] = 0;
  73.         }
  74.         for (int j = 0; j < num; j++) {
  75.             c[a[j] + k / 2]++;
  76.         }
  77.         for (int i = 1; i < k; i++) {
  78.             c[i] = c[i] + c[i - 1];
  79.         }
  80.         for (int j = num - 1; j >= 0; j--) {
  81.             b[c[a[j] + k / 2] - 1] = a[j];
  82.             c[a[j] + k / 2]--;
  83.         }
  84.     }
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement