Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package quicksort;
- import java.util.ArrayList;
- public class QuickSort {
- /**
- * This method sort the input ArrayList using quick sort algorithm.
- * @param input the ArrayList of integers.
- * @return sorted ArrayList of integers.
- */
- private ArrayList<Integer> quicksort(ArrayList<Integer> input){
- if(input.size() <= 1){
- return input;
- }
- int middle = (int) (input.size() / 2);
- int pivot = input.get(middle); //zwraca el o indexie
- ArrayList<Integer> less = new ArrayList<Integer>();
- ArrayList<Integer> greater = new ArrayList<Integer>();
- for (int i = 0; i < input.size(); i++) {
- if(input.get(i) <= pivot){
- if(i == middle){
- continue;
- }
- less.add(input.get(i));
- }
- else{
- greater.add(input.get(i));
- }
- }
- return concatenate(quicksort(less), pivot, quicksort(greater));
- }
- /**
- * Join the less array, pivot integer, and greater array
- * to single array.
- * @param less integer ArrayList with values less than pivot.
- * @param pivot the pivot integer.
- * @param greater integer ArrayList with values greater than pivot.
- * @return the integer ArrayList after join.
- */
- private ArrayList<Integer> concatenate(ArrayList<Integer> less, int pivot, ArrayList<Integer> greater){
- ArrayList<Integer> list = new ArrayList<Integer>();
- for (int i = 0; i < less.size(); i++) {
- list.add(less.get(i));
- }
- list.add(pivot);
- for (int i = 0; i < greater.size(); i++) {
- list.add(greater.get(i));
- }
- return list;
- }
- public static void main(String[] args) {
- ArrayList<Integer> input = new ArrayList<>();
- input.add(5);
- input.add(6);
- input.add(3);
- input.add(2);
- input.add(8);
- input.add(-4);
- input.add(-9);
- input.add(9);
- input.add(0);
- input.add(1);
- QuickSort app = new QuickSort();
- System.out.println(input); //Before sort
- System.out.println(app.quicksort(input)); //After sort
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement