Sort an array in Java

后端 未结 17 1193
傲寒
傲寒 2020-11-22 04:53

I\'m trying to make a program that consists of an array of 10 integers which all has a random value, so far so good.

However, now I need to sort them in order from l

17条回答
  •  眼角桃花
    2020-11-22 05:27

    Java 8 provides the option of using streams which can be used to sort int[] array as:

    int[] sorted = Arrays.stream(array).sorted().toArray(); // option 1
    Arrays.parallelSort(array); //option 2
    

    As mentioned in doc for parallelSort :

    The sorting algorithm is a parallel sort-merge that breaks the array into sub-arrays that are themselves sorted and then merged. When the sub-array length reaches a minimum granularity, the sub-array is sorted using the appropriate Arrays.sort method. If the length of the specified array is less than the minimum granularity, then it is sorted using the appropriate Arrays.sort method. The algorithm requires a working space no greater than the size of the original array. The ForkJoin common pool is used to execute any parallel tasks.

    So if the input array is less than granularity (8192 elements in Java 9 and 4096 in Java 8 I believe), then parallelSort simply calls sequential sort algorithm.

    Just in case we want to reverse sort the integer array we can make use of comparator as:

    int[] reverseSorted = IntStream.of(array).boxed()
                            .sorted(Comparator.reverseOrder()).mapToInt(i -> i).toArray();
    

    Since Java has no way to sort primitives with custom comparator, we have to use intermediate boxing or some other third party library which implements such primitive sorting.

提交回复
热议问题