Вы находитесь на странице: 1из 16

Алгоритмы программирования и структуры данных

Сортировки с линейным временем выполнения

Цифровая сортировка
Цифровая сортировка

I Предназначена для сортировки массива последовательностей одинаковой


длины, состоящих из элементов, на которых задано отношение линейного
порядка.

2
Цифровая сортировка

I Предназначена для сортировки массива последовательностей одинаковой


длины, состоящих из элементов, на которых задано отношение линейного
порядка.
I По аналогии с разрядами чисел будем называть элементы, из которых
состоят сортируемые последовательности, разрядами.

2
Цифровая сортировка

I Предназначена для сортировки массива последовательностей одинаковой


длины, состоящих из элементов, на которых задано отношение линейного
порядка.
I По аналогии с разрядами чисел будем называть элементы, из которых
состоят сортируемые последовательности, разрядами.
I Алгоритм состоит в сортировке заданных последовательностей какой-либо
устойчивой сортировкой по каждому разряду, в порядке от младшего
разряда к старшему.

2
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Пример:
BAR
BOX
BIG
ROW
EAR
RUG
COW
TAR
TAN

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Пример:
BAR BIG
BOX RUG
BIG TAN
ROW BAR
EAR EAR
RUG TAR
COW ROW
TAR COW
TAN BOX

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Пример:
BAR BIG TAN
BOX RUG BAR
BIG TAN EAR
ROW BAR TAR
EAR EAR BIG
RUG TAR COW
COW ROW ROW
TAR COW BOX
TAN BOX RUG

3
Алгоритм цифровой сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Пример:
BAR BIG TAN BAR
BOX RUG BAR BIG
BIG TAN EAR BOX
ROW BAR TAR COW
EAR EAR BIG EAR
RUG TAR COW ROW
COW ROW ROW RUG
TAR COW BOX TAN
TAN BOX RUG TAR

3
Время работы алгоритма цифровой
сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Если время работы устойчивой сортировки линейно, то время работы
цифровой сортировки также линейно.

4
Время работы алгоритма цифровой
сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Если время работы устойчивой сортировки линейно, то время работы
цифровой сортировки также линейно.
I Пусть k — число значений, которые могут принимать элементы
сортируемых последовательностей.

4
Время работы алгоритма цифровой
сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Если время работы устойчивой сортировки линейно, то время работы
цифровой сортировки также линейно.
I Пусть k — число значений, которые могут принимать элементы
сортируемых последовательностей.
I Если k = O(n), то время работы изученной ранее сортировки подсчетом
линейно.

4
Время работы алгоритма цифровой
сортировки

I A[1..n] — сортируемый массив


I d — длина последовательностей в A (число разрядов)
I RadixSort(A, d)
1: for i ← d downto 1 do
2: Устойчивая сортировка по i-му разряду
I Если время работы устойчивой сортировки линейно, то время работы
цифровой сортировки также линейно.
I Пусть k — число значений, которые могут принимать элементы
сортируемых последовательностей.
I Если k = O(n), то время работы изученной ранее сортировки подсчетом
линейно.
I Таким образом, если в качестве устойчивой сортировки выбрать сортировку
подсчетом, то время работы цифровой сортировки будет равно Θ(n).
4