Sorting in Descending Order#4738

Sorting in Descending Order (Editorial)

To sort the integers in non-increasing order, you can use any sorting algorithm.

For example, you can use the sort function from the STL. To specify the sorting direction, you can utilize comparators:

These comparators are defined in the <set> library.

Algorithm implementation

Declare the array.

#define MAX 1010
int m[MAX];

Read the input data.

scanf("%d",&n);
for (i = 0; i < n; i++) 
  scanf("%d",&m[i]);

Sort the array in descending order.

sort(m, m + n, greater<int>());

Print the resulting array.

for (i = 0; i < n; i++)
  printf("%d ",m[i]);
printf("\n");

Algorithm implementation — vector

Declare a vector to store the input sequence of numbers.

vector<int> v;

Read the input data.

scanf("%d",&n);
v.resize(n);
for (i = 0; i < n; i++) 
  scanf("%d",&v[i]);

Sort the array in descending order.

sort(v.begin(),v.end(),greater<int>());

Print the resulting array.

for (i = 0; i < v.size(); i++)
  printf("%d ",v[i]);
printf("\n");

Algorithm implementation — comparator

Declare the array.

#define MAX 1001
int m[MAX];

Declare a function — comparator f to sort integers in descending order.

int f(int a, int b)
{
  return a > b;
}

The main part of the program. Read the input data.

scanf("%d", &n);
for (i = 0; i < n; i++)
  scanf("%d", &m[i]);

Sort the array in descending order using a comparator.

sort(m, m + n, f);

Print the resulting array.

for (i = 0; i < n; i++)
  printf("%d ", m[i]);
printf("\n");

Java implementation — comparator

import java.util.*;

public class Main
{
  public static class MyFun implements Comparator<Integer> 
  {
    public int compare(Integer a, Integer b)
    {
      return b - a;
    }
  }
	
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    Integer m[] = new Integer[n];

    for(int i = 0; i < n; i++) 
      m[i] = con.nextInt();

    Arrays.sort(m, new MyFun());

    for(int i = 0; i < n; i++) 
      System.out.print(m[i] + " ");

    System.out.println();

    con.close();
  }
}

Java implementation — reverse order

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    Integer m[] = new Integer[n];

    for(int i = 0; i < n; i++) 
      m[i] = con.nextInt();

    Arrays.sort(m,Collections.reverseOrder());

    for(int i = 0; i < n; i++) 
      System.out.print(m[i] + " ");

    System.out.println();

    con.close();
  }
}

Python implementation

Read the input data.

n = int(input())
lst = list(map(int,input().split()))

Sort the list in descending order.

lst.sort(reverse = True)

Print the numbers in non-increasing order.

print(*lst)