Advertisement
Guest User

Java qsort

a guest
Jan 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.91 KB | None | 0 0
  1. public static List<Wall> qsort(List<Wall> input) {
  2.  
  3.         if (input.size() <= 1) {
  4.             return input;
  5.         }
  6.  
  7.         int middle = (int) Math.ceil((double) input.size() / 2);
  8.         Wall pivot = input.get(middle);
  9.  
  10.         List<Wall> less = new ArrayList<Wall>();
  11.         List<Wall> greater = new ArrayList<Wall>();
  12.  
  13.         for (int i = 0; i < input.size(); i++) {
  14.             if (input.get(i).effeciency >= pivot.effeciency) {
  15.                 if (i == middle) {
  16.                     continue;
  17.                 }
  18.                 less.add(input.get(i));
  19.             } else {
  20.                 greater.add(input.get(i));
  21.             }
  22.         }
  23.  
  24.         return concatenate(qsort(less), pivot, qsort(greater));
  25.     }
  26.  
  27.     private static List<Wall> concatenate(List<Wall> less, Wall pivot, List<Wall> greater) {
  28.  
  29.         List<Wall> list = new ArrayList<>();
  30.  
  31.         for (int i = 0; i < less.size(); i++) {
  32.             list.add(less.get(i));
  33.         }
  34.  
  35.         list.add(pivot);
  36.  
  37.         for (int i = 0; i < greater.size(); i++) {
  38.             list.add(greater.get(i));
  39.         }
  40.  
  41.         return list;
  42.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement