0

I was thinking of using a Comparator to sort an int[] array in descending order.

I tried as follows, however, I get an error, mainly due to the fact that, Comparator is for objects such as Integer, and not a data type such as int[]. Is it possible to sort an int[] array in descending order without converting it to an Integer array ?

Arrays.sort(a, new Comparator<int>() {

            @Override
            public int compare( int a, int b)
            {
                return b-a;
            }
        });

Based on Andy Turner's response.

public class ArraySortDesendingOrder {
    public static void main(String[] args) {
//        int[] a = {1,2,3,4,5,6};
        int[] a = {1,2,3,4,5};

        ArraySortDesendingOrder obj = new ArraySortDesendingOrder();

        obj.print(a);
        obj.sortInDescnedingOrder(a);
        obj.print(a);
    }

    public void sortInDescnedingOrder( int[] a)
    {
        Arrays.sort(a);

        for(int i = 0;i<a.length/2;i++)
        {
            swap(a, i, a.length-1-i);
        }
    }

    public void swap(int[] a, int i, int j)
    {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }

    public void print(int[] a)
    {
        for(int i = 0;i<a.length;i++)
            System.out.print(a[i] + " ");
        System.out.println("");
    }
}
saltmangotree
  • 171
  • 4
  • 11
  • Sure: sort it ascending (using `Arrays.sort`) and then reverse the array. – Andy Turner Mar 05 '17 at 21:27
  • @AndyTurner thanks Andy. updated the post with what you suggested. However, isn't there a more direct way, using just built-in methods. Something like Arrays.sort(a, desc = true), or atleast Arrays.sort(a);Arrays.reverse(a); – saltmangotree Mar 05 '17 at 21:40

0 Answers0