Рабочий стол > DL Руководство пользователя > Сортировки > Information > Сравнить страницу
Сортировки Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотр истории страницы


Есть 1 изменений. Просмотреть первое изменение .

 Описаны сортировки
  
 1     Сортировка обменом Сортировка с номерами
 2     Сортировка пузырьком - не меняя порядок одинаковых чисел
 3     Сортировка подсчетом (черпаком) - линейная сортировка целых чисел
  
 *Сортировка по возрастанию*
 _..._
 _int a\[10\];_
 _..._
 _sort(a,a+10);_
 _..._
  
 *Сортировка по убыванию*
 _..._
 _int a{_}_\[10\]__;_
 _..._
 _sort(a,a+10); reverse(a,a+10); // после сортировки реверсируем массив a_
  
 Альтернатива (сортировка по убыванию )
 _sort(a,a+10,greater<int>());_
  
 *Сортировка пузырьком* \- не меняя порядок одинаковых чисел
 _..._
 _int a{_}_\[10\]__;_
 _..._
 _stable_sort(a,a+10);_
 _..._
  
 *Сортировка с номерами*
  
 от 0 до 9
  
 ввод
 _int a{_}_\[10\]__,i;_
 _for (i=0; i<10; i++) cin >> a{_}_\[i\]__;_
  
 добавление последней цифрой номера (для двузначных чисел умножаем на 100 и т.д)
 _for (i=0; i<10; i++) a{_}_\[i\]__=a{_}_\[i\]__\*10+i;_
  
 Сортируем
 _sort(a,a+10);_
  
 Выводим 3 первых номера после сортировки (для двузначных чисел %100 - остаток от деления на 100 и т.д)
 _for (i=0; i<3; i++) cout << (a{_}_\[i\]__%10)+1 << endl;_
  
 Альтернатива - использование вектора
  
 Для сортировки с номерами можно сделать так:
  
 _vector<pair<int, int> > A(N);_
 _for (int i = 0; i < N; i++)_
 {
 cin >> A\[i\].first;
 A\[i\].second=i;
 };
 \\
  
 Выводим 3 первых номера после сортировки
 _for (int i = 0; i < 3; i++) cout << A{_}_\[i\]__.second;_
  
 Пусть имеется массив из N точек с координатами x и y
  
 Массив координат точек X,Y сортируется по возрастанию X,&nbsp;а в случае равенства X - по возрастанию Y
 В случае, когда гарантируется, что все X различны,&nbsp;второй массив просто параллельно передвигается&nbsp;никогда не участвуя в сравнениях
  
 Например
 _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());_
  
 *Сортировка подсчетом (черпаком)*
  
 _\#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]++; \}
  \{ cin >> j; a\[j\]\++; \}
 _for (i=0; i<15000; i++)_
 _if (a{_}_\[i\]__) for (j=0; j<a{_}_\[i\]__; j++) cout << i;_
 _}_
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами