Advertisement
vladimirVenkov

quickSort

Jan 22nd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.64 KB | None | 0 0
  1. package com.telerikacademy.tasks.Recursion;
  2.  
  3. import java.util.*;
  4. import java.util.function.IntUnaryOperator;
  5. import java.util.stream.Collectors;
  6. import java.util.stream.IntStream;
  7. import java.util.stream.Stream;
  8.  
  9. public class QuickSortDemoTimeChallenge {
  10.  
  11.     private static List<Integer> generateRandomListInRange(int listSize, int maxIntValue) {
  12.  
  13.         int[] array = new int[listSize];
  14.  
  15.         Random random = new Random();
  16.  
  17.         IntUnaryOperator unaryOpInt = (p) -> random.nextInt(maxIntValue + 1);
  18.         // populate array a with random numbers
  19.         Arrays.setAll(array, unaryOpInt);
  20.  
  21.         // Since we want to return List<> we can
  22.         // create ArrayList from array as follows.
  23.  
  24.         List<Integer> arrList = new ArrayList<>(IntStream.of(array).boxed().collect(Collectors.toList()));
  25.  
  26.         return arrList;
  27.     }
  28.     public static void main(String[] args) {
  29.  
  30.         List<Integer> randomGeneratedList = generateRandomListInRange(500000, 10000);
  31.  
  32.         long startTime = System.nanoTime();
  33.         quickSort(randomGeneratedList);
  34.         long endTime = System.nanoTime();
  35.         long durationCustomMade = endTime - startTime;
  36.  
  37.         long startTime2 = System.nanoTime();
  38.         randomGeneratedList.sort(Comparator.naturalOrder());
  39.         long endTime2 = System.nanoTime();
  40.         long durationBuildIn = endTime2 - startTime2;
  41.  
  42.         System.out.println("Custom Time: " + durationCustomMade);
  43.         System.out.println("BuildIn Time: " + durationBuildIn);
  44.         System.out.println("Rate: " + durationCustomMade/durationBuildIn);
  45.        // quickSort(randomGeneratedList).forEach(System.out::println);
  46.  
  47.     }
  48.  
  49.     private static List<Integer> quickSort(List<Integer> listToSort) {
  50.         if (listToSort.size() <= 1 || listToSort.stream().allMatch(element -> element.equals(listToSort.get(0)))) {
  51.             return listToSort;
  52.         }
  53.  
  54.         int pivot = listToSort.get(0);
  55.  
  56.         List<Integer> lesser = listToSort.stream().filter(x -> x <= pivot).collect(Collectors.toList());
  57. //        List<Integer> pivots = listToSort.stream().filter(x -> x == pivot).collect(Collectors.toList());
  58.         List<Integer> greater = listToSort.stream().filter(x -> x > pivot).collect(Collectors.toList());
  59.  
  60.         lesser = quickSort(lesser);
  61.         greater = quickSort(greater);
  62.  
  63.         return Stream.concat(lesser.stream(), greater.stream()).collect(Collectors.toList());
  64. //        List<Integer> result = Stream.concat(lesser.stream(), pivots.stream()).collect(Collectors.toList());
  65. //        result = Stream.concat(result.stream(), greater.stream()).collect(Collectors.toList());
  66. //        return result;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement