Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.12 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3. public class ColorSort {
  4.     public enum Color {
  5.         red(0),
  6.         green(1),
  7.         blue(2);
  8.  
  9.         public final int order;
  10.  
  11.         Color(int label) {
  12.             this.order = label;
  13.         }
  14.     }
  15.  
  16.     public static void main(String[] param) {
  17.         Color[] test = {Color.blue, Color.green, Color.blue, Color.red, Color.red};
  18.         reorder(test);
  19.         System.out.println(Arrays.toString(test));
  20.     }
  21.  
  22.     public static void reorder(Color[] balls) {
  23.         int length = balls.length;
  24.         Color[] output = new Color[length];
  25.         int[] count = {0, 0, 0};
  26.  
  27.         for (Color color : balls) {
  28.             int order = color.order;
  29.             int cnt = count[order];
  30.             count[order] = ++cnt;
  31.         }
  32.  
  33.         count[2] = count[0] + count[1] + count[2] - 1;
  34.         count[1] = count[0] + count[1] - 1;
  35.         count[0] = count[0] - 1;
  36.  
  37.         for (int i = length - 1; i >= 0; i--) {
  38.             output[count[balls[i].order]] = balls[i];
  39.             --count[balls[i].order];
  40.         }
  41.  
  42.         System.arraycopy(output, 0, balls, 0, length);
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement