Зворотний зв'язок

ПОШУК, СОРТУВАННЯ ТА ПОНЯТТЯ СКЛАДНОСТІ У ПРОГРАМУВАННІ

Очевидно, що кількість елементарних дій при виконанні функції srcseq прямо пропорційна кількості порівнянь A[i]<>key. В найгіршому випадку з ключем порівнюються всі елементи масиву. Звідси максимальна кількість дій та найбільший час виконання функції прямо (лінійно) пропорційні n, і найбільший час пошуку t1 є лінійною функцією від кількості елементів масиву. Описаний спосіб пошуку називається лінійним. Лінійну залежність часу від кількості елементів, тобто довжини n, будемо позначати символом "O": t1 = O(n).

1.2. Дихотомічний пошук

Тепер опишемо так званий дихотомічний пошук у "нормальному словнику". Ми розкриваємо словник приблизно в його середині. Якщо слово повинно бути в словнику далі, то шукати треба лише в другій половині словника. Його середина стає для нас початком, і ми розкриваємо його на середині другої половини. Аналогічно, коли слово повинно бути в першій половині, ми залишаємо для пошуків лише її. Отже, кожне заглядання в словник поділяє "простір пошуку" на дві половини й зменшує його приблизно вдвічі. Звідси й назва, оскільки дихотомія – це поділ на дві половини. Такий пошук ще називають двійковим, або бінарним.

Нехай значення елементів масиву упорядковані за зростанням, тобто A[1] A[2] …  A[n] (кажуть, масив відсортований). Опишемо дихотомічний пошук такою функцією:

function srcbin ( var A : ArT; n : Indx; key : T) : integer;

var i, hb, lb : integer;

begin

lb := 1; hb := n;

i := (lb + hb) div 2;

while (lb < hb) do

begin

if A[i] = key then break else

if A[i] > key

then hb := i - 1 { key може бути лише ліворуч від A[i] }

else lb := i + 1; { key може бути лише праворуч від A[i] }

i := (lb + hb) div 2

end;

{ lb >= hb або A[i] = key }

if (i=0) or (i=n+1) then srcbin := 0 else

if A[i] = key then srcbin := i else srcbin := 0

end


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат