Просмотр источника
Описаны сортировки 1 Сортировка обменом Сортировка с номерами 2 Сортировка пузырьком - не меняя порядок одинаковых чисел 3 Сортировка подсчетом (черпаком) - линейная сортировка целых чисел *Сортировка по возрастанию* {quote}_..._ _int a\[10\];_ _..._ _sort(a,a+10);_ _..._{quote} *Сортировка по убыванию* {quote}_..._ _int a{_}_\[10\]__;_ _..._ _sort(a,a+10); reverse(a,a+10); // после сортировки реверсируем массив a{_}{quote} Альтернатива (сортировка по убыванию ) {quote}{_}sort(a,a+10,greater<int>());_{quote} *Сортировка пузырьком* \- не меняя порядок одинаковых чисел {quote}_..._ _int a{_}_\[10\]__;_ _..._ _stable_sort(a,a+10);_ _..._{quote} *Сортировка с номерами* от 0 до 9 ввод {quote}{_}int a{_}_\[10\]__,i;_ _for (i=0; i<10; i++) cin >> a{_}_\[i\]__;_{quote} добавление последней цифрой номера (для двузначных чисел умножаем на 100 и т.д) {quote}{_}for (i=0; i<10; i++) a{_}_\[i\]__=a{_}_\[i\]__\*10+i;_{quote} Сортируем {quote}{_}sort(a,a+10);_{quote} Выводим 3 первых номера после сортировки (для двузначных чисел %100 - остаток от деления на 100 и т.д) {quote}{_}for (i=0; i<3; i++) cout << (a{_}_\[i\]__%10)+1 << endl;_{quote} Альтернатива - использование вектора Для сортировки с номерами можно сделать так: {quote}{_}vector<pair<int, int> > A(N);_ _for (int i = 0; i < N; i++)_ cin >> A\[i\].first; \_bq. _A\[i\].second=i;{quote}\\ Выводим 3 первых номера после сортировки {quote}{_}for (int i = 0; i < 3; i++) cout << A{_}_\[i\]__.second;_{quote} Пусть имеется массив из N точек с координатами x и y Массив координат точек X,Y сортируется по возрастанию X, а в случае равенства X - по возрастанию Y В случае, когда гарантируется, что все X различны, второй массив просто параллельно передвигается никогда не участвуя в сравнениях Например {quote}{_}vector<pair<int, int> > A(N);_ _for(int i = 0; i < N; i++)_ _cin >> A{_}_\[i\]__.first >> A{_}_\[i\]__.second;_ _sort(A.begin(), A.end());_{quote} *Сортировка подсчетом (черпаком)* {code:title=Cherpak.cpp\|borderStyle=solid} #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; } {code} |