Quite often we need to

**sort array in Java**luckily java.util.Arrays class provide several utility method to sort java array of any type e.g. primitive, object or int, String etc. Arrays is in java.util package and exposed all sorting related method as static utility functions. you can access sort() as Arrays.sort() and just pass your array and it will sort that array object. You can sort array in ascending order, descending order or any custom order defined by custom comparator in Java. In last article we have seen how to Sort ArrayList in Java and in this java article we will see**examples of sorting array in ascending order**,**descending order**and**sorting sub arrays in java**.##
__Sort Array in Java on ascending and descending order__

###
__Sorting Java Array into Ascending Order:__

In order to sort an array (String, int or any type) in ascending order we don't need to to anything special. Arrays.sort() method by default sort elements in there

**natural order**implemented by CompareTo method. String array in Java will be sorted**lexicographically**. integer will be sorted**numerically**ascending order. look on code section for complete example of*how to sort java array into ascending order*. You can also sort anonymous array in Java by this method but since you don’t have any name to refer that it doesn’t make much sense.###
__Sorting Java Array into Descending Order:__

In order to sort a java array into

**descending****order**you need to provide an external Comparator in Java which can sort elements in there reverse order and luckily we have that built int as java.util.Collections.reverseOrder(), which returns a**reverse order comparator**which gives reverse of natural ordering of element objects. pass this reverse comparator to sort method and it will*sort array into descending order*as shown in code example on last section. There is another way in which you can convert Array into ArrayList and than sort the arraylist but that’s again a two step process so its better to sort array using Arrays.sort() method###
__Sorting Sub Array in Java__

Arrays class also provide methods to sort part of java array or sub array. So in case if you have big array and you only need to sort a particular section than just provide start index and end index to java.util.Arrays.sort(array,index,index) and it will sort the array only for that range. this is much faster than sorting whole array and than getting a range of values out of it. here is code example of sorting part of array in Java:

###
__Code Example of Sorting Array in Java__

In this section of code example we will see how to sort Java array into

**ascending order**,**descending order**and**sorting sub arrays in Java**:**import**java.util.Arrays;

**import**java.util.Collections;

**public**

**class**HashtableDemo {

**public**

**static**

**void**main(String args[]) {

String[] companies = { "Google", "Apple", "Sony" };

**// sorting java array in ascending order**

System.

*out*.println("Sorting String Array in Ascending order in Java Example");__System__.

*out*.println("Unsorted String Array in Java: ");

*printNumbers*(companies);

Arrays.

*sort*(companies);
System.

*out*.println("Sorted String Array in ascending order : ");*printNumbers*(companies);

**// sorting java array in descending order**

System.

*out*.println("Sorting Array in Descending order in Java Example");
System.

*out*.println("Unsorted int Array in Java: ");*printNumbers*(companies);

Arrays.

*sort*(companies, Collections.*reverseOrder*());
System.

*out*.println("Sorted int Array in descending order : ");*printNumbers*(companies);

System.

*out*.println("Sorting part of array in java:");**int**[] numbers = { 1, 3, 2, 5, 4 };

Arrays.

*sort*(numbers, 0, 3);
System.

*out*.println("Sorted sub array in Java: ");**for**(

**int**num : numbers) {

System.

*out*.println(num);
}

}

**public**

**static**

**void**printNumbers(String[] companies) {

**for**(String company : companies) {

System.

*out*.println(company);
}

}

}

**Output:**

**Sorting String Array in Ascending order in Java Example**

Unsorted String Array in Java:

Google

Apple

Sony

**Sorted String Array in ascending order :**

Apple

Google

Sony

**Sorting Array in Descending order in Java Example**

Unsorted int Array in Java:

Apple

Google

Sony

**Sorted String Array in descending order**:

Sony

Google

Apple

**Sorting part of array in java:**

Sorted sub array in Java:

1

2

3

5

4

###
__Important points about Sort method of Arrays:__

Here are some important and worth noting point about sort method of Arrays class for quick references:

1. Arrays.sort() is an overloaded method and can sort int, byte, short, char or object[] arrays.

2. Arrays.sort)( also allows you to sort a sub-array or part of array in Java.

3. Arrays class also contains utility methods e.g. binarySearch for performing search on array

That’s all on

**how to sort java array on ascending and descending order**and part of array in Java. You can also use the workaround by converting array into arraylist and than sorting but I think Arrays.sort() is preferred method for sorting arrays in Java.**Further Learning**

Data Structures and Algorithms: Deep Dive Using Java

Algorithms and Data Structures - Part 1 and 2

Data Structures in Java 9 by Heinz Kabutz

**Java Tutorials you may like**

## 8 comments :

int minval = input[0];

int temp=0;

for(int i = 0; i< input.length; i++)

{

for(int j = 0; j< input.length-1; j++)

{

if(input[j+1]<input[j])

{

temp=input[j+1];

input[j+1]=input[j];

input[j]=temp;

}

}

}

One of the most important thing to know about Arrays.sort() method is that it uses two pivot quicksort algorithm to sort primitives while a stable mergesort algorithm to sort objects. In addition, there is one more overloaded version of sort(array, Comparator) which takes comparator to sort array in custom order, and can be uesd to sort in reverse order. By the way, sorry to say but no easy way to sort primitive in reverse order.

There are couple of other ways to sort array in Java e.g. by using bubble sort, quick sort or insertion sort. Though Java only support quicksort via java.util.Arrays class, you can still write this sorting algorithm code by your own.

hi please help me if i am using

Arrays.sort(numbers, 0, numbers.length-1, Collections.reverseOrder());

it is saying this argument is not applicable

public static Comparator reverseOrder(Comparator cmp) {

if (cmp == null)

return reverseOrder();

if (cmp instanceof ReverseComparator2)

return ((ReverseComparator2)cmp).cmp;

return new ReverseComparator2<>(cmp);

}

Hello Shailesh, what is the type of numbers array? if it's a primitive array e.g. an int array then it will not work because Array.sort() method accepts array of objects e.g. Integer, String or Short. This limitation because Comparator can only compare objects.

int[] numbers = {1, 2, 3};

Arrays.sort(numbers, 0, numbers.length-1, Collections.reverseOrder()); // not ok

Integer[] primes = {2, 3};

Arrays.sort(primes, 0, primes.length-1, Collections.reverseOrder()); // Ok

Unfortunately, there is no way to sort a primitive array in reverse or descending order by using Array.sort() method. Only reasonable way is to sort the array in ascending order and then reverse the array in place as shown in that article.

CMD could not found or load main class

where i was mistake please check

import java.util.Scanner;

class Ascending_Order

{

public static void main(String args[])

{

int n, temp;

Scanner s = new Scanner(System.in);

System.out.print("Enter no. of elements you want in array:6");

n = s.nextInt();

int a[] = new int[6];

for (int i=0; i<6;i++)

{

a[i] = s.nextInt();

}

for (int i=0;i<6;i++)

{

for (int j=i+1;j<6;j++)

{

if (a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

System.out.print("all elements in Ascending Order:");

for (int i=0; i<6-1;i++)

{

System.out.print(a[i]+",");

}

System.out.print(a[6-1]);

}

}

Hy guys here is the program of sort ascending and descending without the sort method:

import java.util.Scanner;

public class Experiment

{

public static void main(String args[])

{

Scanner scan = new Scanner(System.in);

int tenNums[]=new int[10], orderedNums[]=new int[10];

int greater;

String choice;

//get input

System.out.println("Enter 10 integers : ");

for (int i=0;i ");

tenNums[i] = scan.nextInt();

}

System.out.println();

//imperfect number ordering algorithm

for(int indexL=0;indexLtenNums[indexR])

{

greater++;

}

}

orderedNums[greater]=tenNums[indexL];

}

//ask if ascending or descending

System.out.print("Display order :\nA - Ascending\nD - Descending\nEnter your choice : ");

choice = scan.next();

//output the numbers based on choice

if(choice.equalsIgnoreCase("a"))

{

for(greater=0;greater-1;greater--)

{

System.out.print(orderedNums[greater]+" ");

}

}

}

}

## Post a Comment