Sıralama enmək#4738

Sıralama enmək (Həll təhlili)

Tam ədədləri azalmayan ardıcıllıqla çeşidləmək üçün istənilən çeşidləmə alqoritmindən istifadə etmək kifayətdir.

Məsələn, STL şablon kitabxanasında olan sort funksiyasından istifadə edə bilərik. Çeşidləmə istiqamətini göstərmək üçün isə komparatorlardan istifadə edə bilərik:

Bu komparatorlar <set> kitabxanasında müəyyən edilmişdir.

Alqoritmin realizasiyası

İşçi massiv elan edək.

#define MAX 1010
int m[MAX];

Giriş məlumatlarını oxuyuruq.

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

Massivi azalan qaydada çeşidləyirik.

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

Nəticə massivi çıxardırıq.

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

Alqoritmin realizasiyası — vektor

Giriş ardıcıllığını saxlamaq üçün vektor elan edək.

vector<int> v;

Giriş məlumatlarını oxuyuruq.

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

Massivi azalan qaydada çeşidləyirik.

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

Nəticə massivi çıxardırıq.

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

Alqoritmin realizasiyası — komparator

İşçi massiv elan edək.

#define MAX 1001
int m[MAX];

Tam ədədləri azalan qaydada çeşidləmək üçün f komparator funksiyasını elan edək.

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

Proqramın əsas hissəsi. Giriş məlumatlarını oxuyuruq.

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

Komparator istifadə edərək massivi azalan qaydada çeşidləyirik.

sort(m, m + n, f);

Nəticə massivi çıxardırıq.

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

Java implementasiyası — komparator

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 implementasiyası — əks ardıcıllıq

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 implementasiyası

Giriş məlumatlarını oxuyuruq.

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

Siyahını azalan qaydada çeşidləyirik.

lst.sort(reverse = True)

Ədədləri azalan ardıcıllıqla çıxardırıq.

print(*lst)