Цифровая сортировка — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 5: Строка 5:
 
Для чисел наиболее часто в качестве устойчивой сортировки применяют [[сортировка подсчетом|сортировку подсчетом]].  
 
Для чисел наиболее часто в качестве устойчивой сортировки применяют [[сортировка подсчетом|сортировку подсчетом]].  
 
==Сложность==
 
==Сложность==
Пусть <tex>m</tex> - количество разрядов, n - количество входных данных, T(n) - сложность устойчивой сортировки, тогда сложность цифровой сортировки - <tex>О(m*T(n))</tex>.
+
Пусть <tex>k</tex> - количество разрядов, n - количество входных данных, <tex>T(n)</tex> - сложность устойчивой сортировки, тогда сложность цифровой сортировки - <tex>О(k*T(n))</tex>.
 
При использовании сортировки подсчетом получаем линейную зависимость.
 
При использовании сортировки подсчетом получаем линейную зависимость.
 
==Псевдокод==
 
==Псевдокод==

Версия 19:01, 19 июня 2011

Пример цифровой сортировки

Цифровая сортировка — алгоритм сортировки за линейное время.

Алгоритм

При цифровой сортировке данные разбиваются на "разряды", после этого данные сортируются какой-либо устойчивой сортировкой по каждому разряду, в порядке от младшего разряда к старшему. Для чисел наиболее часто в качестве устойчивой сортировки применяют сортировку подсчетом.

Сложность

Пусть [math]k[/math] - количество разрядов, n - количество входных данных, [math]T(n)[/math] - сложность устойчивой сортировки, тогда сложность цифровой сортировки - [math]О(k*T(n))[/math]. При использовании сортировки подсчетом получаем линейную зависимость.

Псевдокод

 Radix_sort
 for i = 1 to m
    do устойчивая сортировка массива по i-ому разряду

Литература

  • Дональд Кнут Искусство программирования, том 3. Сортировка и поиск
  • Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Алгоритмы: построение и анализ

Ссылки