Advertisement
blackpab

Qsort

Jan 13th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.11 KB | None | 0 0
  1. package quicksort;
  2. import java.util.ArrayList;
  3.  
  4. public class QuickSort {       
  5.     /**
  6.      * This method sort the input ArrayList using quick sort algorithm.
  7.      * @param input the ArrayList of integers.
  8.      * @return sorted ArrayList of integers.
  9.      */
  10.     private ArrayList<Integer> quicksort(ArrayList<Integer> input){
  11.        
  12.         if(input.size() <= 1){
  13.             return input;
  14.         }
  15.                
  16.         int middle = (int) (input.size() / 2);
  17.         int pivot = input.get(middle); //zwraca el o indexie
  18.  
  19.         ArrayList<Integer> less = new ArrayList<Integer>();
  20.         ArrayList<Integer> greater = new ArrayList<Integer>();
  21.        
  22.         for (int i = 0; i < input.size(); i++) {
  23.             if(input.get(i) <= pivot){
  24.                 if(i == middle){
  25.                     continue;
  26.                 }
  27.                 less.add(input.get(i));
  28.             }
  29.             else{
  30.                 greater.add(input.get(i));
  31.             }
  32.         }      
  33.         return concatenate(quicksort(less), pivot, quicksort(greater));
  34.     }
  35.    
  36.     /**
  37.      * Join the less array, pivot integer, and greater array
  38.      * to single array.
  39.      * @param less integer ArrayList with values less than pivot.
  40.      * @param pivot the pivot integer.
  41.      * @param greater integer ArrayList with values greater than pivot.
  42.      * @return the integer ArrayList after join.
  43.      */
  44.     private ArrayList<Integer> concatenate(ArrayList<Integer> less, int pivot, ArrayList<Integer> greater){
  45.        
  46.         ArrayList<Integer> list = new ArrayList<Integer>();
  47.        
  48.         for (int i = 0; i < less.size(); i++) {
  49.             list.add(less.get(i));
  50.         }      
  51.         list.add(pivot);       
  52.         for (int i = 0; i < greater.size(); i++) {
  53.             list.add(greater.get(i));
  54.         }      
  55.         return list;
  56.     }
  57.        
  58.         public static void main(String[] args) {                    
  59.         ArrayList<Integer> input = new ArrayList<>();
  60.             input.add(5);
  61.             input.add(6);
  62.             input.add(3);
  63.             input.add(2);
  64.             input.add(8);
  65.             input.add(-4);
  66.             input.add(-9);
  67.             input.add(9);
  68.             input.add(0);
  69.             input.add(1);            
  70.  
  71.             QuickSort app = new QuickSort();        
  72.         System.out.println(input); //Before sort     
  73.         System.out.println(app.quicksort(input)); //After sort    
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement