Описаны сортировки
1 Сортировка обменом Сортировка с номерами
2 Сортировка пузырьком - не меняя порядок одинаковых чисел
3 Сортировка подсчетом (черпаком) - линейная сортировка целых чисел
Сортировка по возрастанию
bq. ...
bq. int a[10];
bq. ...
bq. sort(a,a+10);
bq. ...
Сортировка по убыванию
bq. ...
bq. int a[10];
bq. ...
bq. sort(a,a+10); reverse(a,a+10); // после сортировки реверсируем массив a
Альтернатива (сортировка по убыванию )
bq. sort(a,a+10,greater<int>());
Сортировка пузырьком - не меняя порядок одинаковых чисел
bq. ...
bq. int a[10];
bq. ...
bq. stable_sort(a,a+10);
bq. ...
Сортировка с номерами
от 0 до 9
ввод
bq. int a[10],i;
bq. for (i=0; i<10; i++) cin >> a[i];
добавление последней цифрой номера (для двузначных чисел умножаем на 100 и т.д)
bq. for (i=0; i<10; i++) a[i]=a[i]*10+i;
Сортируем
bq. sort(a,a+10);
Выводим 3 первых номера после сортировки (для двузначных чисел %100 - остаток от деления на 100 и т.д)
bq. for (i=0; i<3; i++) cout << (a[i]%10)+1 << endl;
Альтернатива - использование вектора
Для сортировки с номерами можно сделать так:
bq. vector<pair<int, int> > A(N);
bq. for (int i = 0; i < N; i++)
_bq. _
Unknown macro: {_bq. _cin >> A[i].first;_bq. _A[i].second=i;_bq. _}
;
Выводим 3 первых номера после сортировки
bq. for (int i = 0; i < 3; i++) cout << A[i].second;
Пусть имеется массив из N точек с координатами x и y
Массив координат точек X,Y сортируется по возрастанию X, а в случае равенства X - по возрастанию Y
В случае, когда гарантируется, что все X различны, второй массив просто параллельно передвигается никогда не участвуя в сравнениях
Например
bq. vector<pair<int, int> > A(N);
bq. for(int i = 0; i < N; i++)
bq. cin >> A[i].first >> A[i].second;
bq. sort(A.begin(), A.end());
Сортировка подсчетом (черпаком)
\#include <bits/stdc++.h>using namespace std;
int main()
{
int a[15000],i,n,j;
for (i=0; i<15000; i++) a[i]=0;
cin >> n;
for (i=0; i<n; i++)
{
cin >> j;
a[j]++;
}
for (i=0; i<15000; i++)
if (a[i]) for (j=0; j<a[i]; j++) cout << i;
}