Сортування за спаданням#4738

Сортування за спаданням (Розбір)

Для сортування цілих чисел у порядку неспадання достатньо скористатися будь-яким алгоритмом сортування.

Наприклад, можна скористатися функцією sort з бібліотеки шаблонів STL. Для вказівки напрямку сортування можна скористатися компараторами:

Ці компаратори визначені у бібліотеці <set>.

Реалізація алгоритму

Оголосимо робочий масив.

#define MAX 1010
int m[MAX];

Читаємо вхідні дані.

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

Сортуємо масив за неспаданням.

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

Виводимо результуючий масив.

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

Реалізація алгоритму — вектор

Оголосимо вектор для зберігання вхідної послідовності чисел.

vector<int> v;

Читаємо вхідні дані.

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

Сортуємо масив за неспаданням.

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

Виводимо результуючий масив.

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

Реалізація алгоритму — компаратор

Оголосимо робочий масив.

#define MAX 1001
int m[MAX];

Оголосимо функцію — компаратор f для сортування цілих чисел за спаданням.

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

Основна частина програми. Читаємо вхідні дані.

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

Сортуємо масив за спаданням з використанням компаратора.

sort(m, m + n, f);

Виводимо результуючий масив.

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

Java реалізація — 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 реалізація — 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 реалізація

Читаємо вхідні дані.

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

Сортуємо список за неспаданням.

lst.sort(reverse = True)

Виводимо числа в порядку неспадання.

print(*lst)