Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
САОД1z.doc
Скачиваний:
60
Добавлен:
11.04.2015
Размер:
715.26 Кб
Скачать

Алгоритм на псевдокоде

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

DO (j=L, L–1, … , 1)

<инициализация очередей Q>

<расстановка элементов из списка S в очереди Q по j – ой цифре >

<соединение очередей Q в список S >

OD

Цифровой метод может успешно использоваться не только для сортировки чисел, но и для сортировки любой информации, представленной в памяти компьютера. Необходимо лишь рассматривать каждый байт ключа сортировки как цифру, принимающую значения от 0 до 255. Тогда для сортировки потребуется m=256 очередей. Для выделения каждого байта ключа сортировки можно использовать массив Digit, наложенный в памяти компьютера на поле элемента последовательности, по которому происходит сортировка. Приведем более детальный алгоритм цифровой сортировки.

Алгоритм на псевдокоде

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

DO (j=L, L-1, … 1)

DO (i=0, 1, … 255)

Qi.Tail:=@ Qi.Head

OD

p:=S

DO (p ≠ NIL)

d:=p → Digit[j]

Qd.Tail → Next:=p

Qd.Tail:=p

p:=p → Next

OD

p:=@ S

DO (i=0, 1, … 255)

IF (Qi.Tail ≠ @ Qi.Head)

p → Next:=Qi.Head

p:=Qi.Tail

FI

OD

p → Next:=NIL

OD

Для цифровой сортировки М<const L(m+n). При фиксированных m и L М=O(n) при n → ∞, что значительно быстрее остальных рассмотренных методов. Однако если длина чисел L велика, то метод может проигрывать обычным методам сортировки. Кроме того, Метод применим только, если задача сортировки сводится к задаче упорядочивания чисел, что не всегда возможно.

Метод обеспечивает устойчивую сортировку. Чтобы изменить направление сортировки на обратное, очереди нужно присоединять в обратном порядке.

    1. Контрольные вопросы

  1. В чем смысл операции слияния серий?

  2. Какова сложность метода прямого слияния?

  3. В чем основная идея метода цифровой сортировки?

  4. Является ли метод цифровой сортировки устойчивым?

  5. Можно ли применять методы сортировки последовательностей для упорядочивания массивов?

  1. Двоичный поиск в упорядоченном массиве

    1. Алгоритм двоичного поиска

Алгоритм двоичного поиска в упорядоченном массиве сводится к следующему. Берём средний элемент отсортированного массива и сравниваем с ключом X. Возможны три варианта:

  1. Выбранный элемент равен X. Поиск завершён.

  2. Выбранный элемент меньше X. Продолжаем поиск в правой половине массива.

  3. Выбранный элемент больше X. Продолжаем поиск в левой половине массива.

Далее рассмотрим две версии реализации двоичного поиска в упорядоченном массиве.

Версия 1

Пример. Найти в отсортированном массиве элемент с ключом X = б.

1

2

3

4

5

6

7

8

9

10

11

12

а

б

б

б

е

ж

и

к

л

м

н

о

а

б

б

б

е

Рисунок 24 Первая версия поиска