Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (1 семестр).doc
Скачиваний:
144
Добавлен:
11.06.2015
Размер:
777.73 Кб
Скачать

8. Алгоритм двоичного поиска значения в одномерном массиве.

Бинарный (двоичный, дихотомический) поиск – это поиск заданного элемента на упорядоченном множестве, осуществляемый путем неоднократного деления этого множества на две части таким образом, что искомый элемент попадает в одну из этих частей. Поиск заканчивается при совпадении искомого элемента с элементом, который является границей между частями множества или при отсутствии искомого элемента.

Сложность:

Алгоритм бинарного поиска

Шаг 1. Определить номер среднего элемента массива middle=(high+low)/2.

Шаг 2. Если значение среднего элемента массива равно искомому, то возвращаем значение, равное номеру искомого элемента, и алгоритм завершает работу.

Шаг 3. Если искомое значение больше значения среднего элемента, то возьмем в качестве массива все элементы справа от среднего, иначе возьмем в качестве массива все элементы слева от среднего (в зависимости от характера упорядоченности). Перейдем к Шагу 1.

const int n=10;

int a[n], x, m, L, H;

cin >> x

L=0; H=n-1;

Bool flag = 0;

While (!flag && L<=H)

{

m = (L+H)/2;

if (a[m]==x)

{

flag=1;

}

else

{

If (a[m]<x)

L=m+1;

else

H=m-1;

}

If (flag)

cout << " индекс = " << m

else

cout << " Нет";

9. Сортировки. Внешние и внутренние. Устойчивые и неустойчивые.

Традиционно методы сортировки делят на внутренние и внешние.

Внутренние методы – это такие методы, которые могут применяться с приемлемой производительностью только к тем спискам данных, которые целиком помещаются в основной (оперативной) памяти процессора.

Внешние методы – это такие методы, которые приемлемы для файлов данных, которые слишком велики, чтобы поместится в основной памяти, и поэтому должны в течение процесса сортировки располагаться на устройствах внешней памяти (лентах, дисках, барабанах).

Устойчивая (стабильная) сортировка — сортировка, которая НЕ меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи.

Тогда соответсвенно,

Неустойчивая сортировка — сортировка, которая меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи.

10. Основные методы сортировки: метод обмена.

В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом "пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица.

Сложность: N2

Простой пузырек:

const int n=10;

int a[n], flag;

do

{

flag=0;

for (int i=0; i<(n-1); i++)

if (a[i]>a[i+1])

{

int t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

} while (flag);

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

Улучшенный пузырек:

const int n=10;

int a[n], flag;

...

do

{

flag=0;

for (int k=1; k<=n-1; k++)

for (int i=0; i<(n-k); i++)

if (a[i]>a[i+1])

{

int t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

} while (flag);