
бин_поиск.ppt
- Количество слайдов: 11
сортировка бинарными включениями.
Бинарный поиск n n Таблица может быть упорядочена по возрастанию или убыванию значения ключа или по частоте обращения к записям таблицы. В первом случае для поиска записей обычно применяют двоичный (бинарный поиск), а во втором случае применяют последовательный просмотр. Двоичный поиск в упорядоченной таблице я является самым экономичным. Он состоит в последовательном делении таблицы пополам и определении, в какой из двух частей находится искомая запись. Последующему делению каждый раз подвергается часть, содержащая искомый ключ.
Поскольку таблица упорядочена по возрастанию ключа, то чтобы определить, в какой части находится требуемое значение ключа, достаточно сравнить значение ключа в точке деления с искомым. Длина двоичного для n элементов имеет порядок O(log 2 n). Например, для таблицы из 1000 элементов средняя длина последовательного просмотра равна 500, в то время как длина двоичного поиска – только 10, а для 1000000 лишь 20.
Функция бинарного поиска Int bisearch(int A[], int n, int key) { int li, rj, k; li = 0; rj = n – 1; while (li <= rj) { k = (li + rj) / 2; if (key > A[k]) li = k + 1; else if (key < A[k]) rj = k – 1; else return k; } return -1; }
Бинарный поиск Ключ = 15 15 15 30 67 78 80 85 90 97 99
Сортировка бинарными включениями. n Сортировка – это процесс перегруппировки однотипных элементов структуры данных в некотором определенном порядке. Цель сортировки – Облегчить последующие поиск, обновление, исключение, включение элементов в структуру данных. Сортировка является важным средством для ускорения работы практически любого алгоритма, в котором требуется частое обращение к определенным элементам структуры данных.
Сортировка методом прямого включения. n Имеется последовательность элементов: a 0, a 1, a 2, … , an-1. Эта последовательность делится на 2 последовательности: упорядоченную последовательность a 0, a 1, … , ai-1 и исходную, неупорядоченную. Первоначально упорядоченная последовательность состоит из одного элемента a 0. При каждом шаге, начиная с i = 1 и увеличивая i каждый раз на 1, из исходной последовательности извлекается i-й элемент ai и вставляется в готовую последовательность в нужное место, при необходимости сдвигая элементы готовой последовательности на одну позицию вправо до i-й позиции.
q Поиск подходящего элемента осуществляется сравнением ai с элементами aj, j = i – 1, i – 2, … , 0, и одновременным обменом местами ai и aj, если ai < aj, то есть сдвигом aj на одну позицию вправо. Процесс поиска заканчивается при выполнении одного из условий: 1) ai >= ai; 2) достигнут левый конец последовательности; Этот метод обеспечивает устойчивую сортировку.
Сортировка методом бинарного (двоичного) включения. n n Сортировка бинарными включениями – это улучшенная сортировка с прямыми включениями. Улучшение состоит в том, что готовая последовательность, в которую нужно вставлять элементы, уже упорядочена. Применение этого алгоритма оправдано только тогда, когда число сортируемых элементов достаточно велико. Среднее число сравнений здесь C = O(n*log 2*n), а среднее число сдвигов M = O(n 2).
Функция бинарной сортировки. void Bin. Ins(int A[], int nn) { int I, j, x, m, L, R; for (i = 1; i < nn; i++) { x = A[i]; L = 0; R = i; while (L < R) { m = (L + R) / 2; if (A[m] <= x) L = m + 1; else R = m; } for (j = i; j >= R; j--) A[j] = A[j - 1]; A[R] = x; } }
Сортировка. 27 412 71 81 59 14 243 87
бин_поиск.ppt