Sorting Program in Java: The sorting program in Java is used to sort arrays either in ascending or descending order. There are two predefined methods available in Java that are used to sort the arrays/ lists. One is Arrays.sort() and another is Collections.sort(). Let’s discuss one by one.
Arrays.sort(): Arrays.sort() works very well with arrays which can be of a primitive data type.
Filename: SortingExample.java
Output:
Explanation: The sort() method is the static method that is present in the Arrays class which in turn is part of the java.util sub-package. Therefore, only the class name will sufficient to invoke the sort() method. The sort() method can also be used to sort subarrays. The following example illustrates the same.
Filename: SortingExample1.java
Output:
Explanation: In the above program, we have used the sort() method, which takes three arguments. The first argument is the array, and the second and the third arguments are the starting and ending index of the sub-array. The element presented at the ending index is not included in sorting. However, the starting index element takes part in sorting. Therefore, the above program performs sorting from 0th index to 7th index in the String array, and from 0th to 6th index for the int array.
Sorting in Descending Order in Arrays
By default, sorting is done in ascending order. However, we can do sorting in descending order. Consider the following example.
Filename: SortingExample2.java
Output:
Explanation: The reverseOrder() method does the trick here. It is a static method of the Collections class. Note that instead of int, we have used Integer in the above program. Because the reverseOrder() method deals with objects, and objects are only created of a class like Integer, not of a data type like int.
Collections.sort(): TheCollections.sort() method is mainly used for object Collections like LinkedList or ArrayList.
Filename: SortingExample3.java
Output:
Explanation: Since it is a list, Arrays.sort() method will not work here. Similar to Arrays.sort() method, default style of sorting in Collections.sort() is also in ascending order. We can also sort the given list partially. The following example illustrates the same.
Filename: SortingExample3.java
Output:
Explanation: The subList() method belongs to the ArrayList class. It takes two arguments the first argument accepts the starting index, and the second argument accepts the ending index. The element at the ending index is always excluded in the sorting. Hence, in our case, sorting will take place from 0th position to the 4th one.
Sorting in descending order in lists is quite similar to arrays. Again, we are using the Collections.reverseOrder() method. Let’s create a Java program that sorts the list in descending order.
Filename: SortingExample4.java
Output:
Explanation: Nothing special here! Very much similar to achieve descending order in arrays.
In the above Java programs, we have used both sort() methods of the classes Collections and Arrays. Let’s discuss what is the difference between them.
We have seen Collections.sort() works well on the lists. However, deep inside Collections.sort() also calls Arrays.sort(). But, before calling Arrays.sort(), Collections.sort() first do the conversion of the input List into an Array then sorting starts.
Thus, Collections.sort() takes one more step as compared to Arrays.sort(). Hence, Collections.sort() is a bit slow as compared to Arrays.sort(). Since Arrays.sort() is called in both the sorting technique, therefore, the sorting algorithm is also the same in both cases. In recent versions of Java, the Timsort algorithm is used for sorting. Timsort is a hybrid sorting algorithm. It is based upon Insertion sort and Merge sort. We will be discussing Merge sort as well as Insertion sort later in detail.
Designed by Elegant Themes | Powered by WordPress