logo

Линеарна претрага против бинарног претраживања

Пре него што разумемо разлике између линеарне и бинарне претраге, прво би требало да знамо одвојено линеарну претрагу и бинарну претрагу.

Шта је линеарна претрага?

Линеарна претрага је такође позната као секвенцијална претрага која једноставно скенира сваки елемент у исто време. Претпоставимо да желимо да претражимо елемент у низу или листи; једноставно израчунамо његову дужину и не скачемо ни на једну ставку.

Хајде да размотримо једноставан пример.

Претпоставимо да имамо низ од 10 елемената као што је приказано на доњој слици:

Линеарна претрага против бинарног претраживања

Горња слика приказује низ типа знакова који има 10 вредности. Ако желимо да тражимо 'Е', онда претрага почиње од 0тхелемент и скенира сваки елемент све док елемент, тј. 'Е' не буде пронађен. Не можемо директно скочити са 0тхелемент за 4тхелемент, тј. сваки елемент се скенира један по један док се елемент не пронађе.

Сложеност линеарне претраге

Како линеарна претрага скенира сваки елемент један по један док се елемент не пронађе. Ако се број елемената повећава, повећава се и број елемената који се скенирају. Можемо рећи да је време потребно за претрагу елемената је пропорционално броју елемената . Према томе, сложеност у најгорем случају је О(н)

Шта је бинарно претраживање?

Бинарна претрага је претрага у којој се израчунава средњи елемент да би се проверило да ли је мањи или већи од елемента који се тражи. Главна предност коришћења бинарне претраге је у томе што не скенира сваки елемент на листи. Уместо да скенира сваки елемент, он врши претрагу до половине листе. Дакле, бинарна претрага захтева мање времена за претрагу елемента у поређењу са линеарном претрагом.

Тај предуслов бинарног претраживања је да низ треба да буде у сортираном редоследу, док линеарна претрага ради и на сортираном и на несортираном низу. Алгоритам бинарног претраживања је заснован на техници завади па владај, што значи да ће рекурзивно поделити низ.

У бинарној претрази користе се три случаја:

Случај 1: подаци

Случај 2: подаци>а[средина] па десно=средина-1

Случај 3: дата = а[мид] // елемент је пронађен

У горњем случају, ' а ' је име низа, мид је индекс елемента израчунат рекурзивно, података је елемент који треба претраживати, лево означава леви елемент низа и јел тако означава елемент који се јавља на десној страни низа.

Хајде да разумемо рад бинарне претраге кроз пример.

Претпоставимо да имамо низ величине 10 који је индексиран од 0 до 9 као што је приказано на доњој слици:

Желимо да тражимо 70 елемента из горњег низа.

Корак 1: Прво израчунавамо средњи елемент низа. Разматрамо две променљиве, односно леву и десну. У почетку, лево =0 и десно=9 као што је приказано на доњој слици:

Линеарна претрага против бинарног претраживања

Средња вредност елемента се може израчунати као:

Линеарна претрага против бинарног претраживања

Према томе, мид = 4 и а[мид] = 50. Елемент који се тражи је 70, тако да а[мид] није једнак подацима. Случај 2 је задовољен, тј. дата>а[мид].

Линеарна претрага против бинарног претраживања

Корак 2: Како подаци>а[средина], тако се вредност лево повећава за средину+1, тј. лево=средина+1. Вредност средине је 4, тако да вредност лево постаје 5. Сада имамо подниз као што је приказано на доњој слици:

Линеарна претрага против бинарног претраживања

Сада опет, средња вредност се израчунава коришћењем горње формуле, а вредност средине постаје 7. Сада, средња вредност се може представити као:

Линеарна претрага против бинарног претраживања

На горњој слици можемо приметити да су а[мид]>дата, па ће опет вредност мид бити израчуната у следећем кораку.

Корак 3: Као [мид]>податак, вредност права се смањује за средину 1. Вредност средине је 7, тако да вредност десно постаје 6. Низ се може представити као:

Линеарна претрага против бинарног претраживања

Вредност средине ће бити поново израчуната. Вредности левог и десног су 5 и 6, респективно. Стога је вредност мид 5. Сада се средина може представити у низу као што је приказано у наставку:

Линеарна претрага против бинарног претраживања

На горњој слици можемо приметити да [средина]

4. корак: Као [средином]

Сада се вредност средине поново израчунава коришћењем формуле о којој смо већ говорили. Вредности левог и десног су 6 и 6, тако да вредност средине постаје 6 као што је приказано на доњој слици:

Линеарна претрага против бинарног претраживања

На горњој слици можемо приметити да је а[мид]=подаци. Дакле, претрага је завршена и елемент је успешно пронађен.

Разлике између линеарне претраге и бинарне претраге

Линеарна претрага против бинарног претраживања

Следе разлике између линеарне и бинарне претраге:

Опис

Линеарна претрага је претрага која проналази елемент на листи узастопним претраживањем елемента док се елемент не пронађе на листи. С друге стране, бинарна претрага је претрага која проналази средњи елемент на листи рекурзивно све док се средњи елемент не упари са траженим елементом.

Рад обе претраге

Линеарна претрага почиње претрагу од првог елемента и скенира један по један елемент без прескакања на следећи елемент. С друге стране, бинарно претраживање дели низ на пола тако што израчунава средњи елемент низа.

Имплементација

Линеарна претрага се може применити на било коју линеарну структуру података као што су векторска, једноструко повезана листа, двоструко повезана листа. Насупрот томе, бинарно претраживање се може применити на тим структурама података са двосмерним преласком, тј. кретањем унапред и уназад.

Сложеност

Линеарно претраживање је једноставно за коришћење, или можемо рећи да је мање сложено јер елементи за линеарну претрагу могу бити распоређени у било ком редоследу, док у бинарном претраживању елементи морају бити распоређени по одређеном редоследу.

Сортирани елементи

Елементи за линеарну претрагу могу бити распоређени по случајном редоследу. У линеарном претраживању није обавезно да су елементи поређани у сортираном редоследу. С друге стране, у бинарном претраживању, елементи морају бити поређани у сортираном редоследу. Може се распоредити у растућем или опадајућем редоследу, и сходно томе, алгоритам ће бити промењен. Како бинарно претраживање користи сортирани низ, потребно је убацити елемент на одговарајуће место. Насупрот томе, за линеарну претрагу није потребан сортирани низ, тако да се нови елемент може лако уметнути на крај низа.

Приступ

Линеарна претрага користи итеративни приступ за проналажење елемента, тако да је позната и као секвенцијални приступ. Насупрот томе, бинарна претрага израчунава средњи елемент низа, тако да користи приступ завади па владај.

Скуп података

бинарно стабло обилажења наруџбине путем поште

Линеарна претрага није погодна за велики скуп података. Ако желимо да претражимо елемент, који је последњи елемент низа, линеарна претрага ће започети претрагу од првог елемента и наставља се до последњег елемента, тако да би време потребно за претрагу елемента било велико. С друге стране, бинарно претраживање је погодно за велики скуп података јер траје мање времена.

Брзина

Ако је скуп података велики у линеарној претрази, онда би рачунски трошкови били високи, а брзина спора. Ако је скуп података велики у бинарној претрази, онда би рачунски трошкови били мањи у поређењу са линеарном претрагом, а брзина постаје брза.

Димензије

Линеарно претраживање се може користити и на једнодимензионалном и на вишедимензионалном низу, док се бинарно претраживање може применити само на једнодимензионалном низу.

Ефикасност

Линеарна претрага је мање ефикасна када узмемо у обзир велике скупове података. Бинарна претрага је ефикаснија од линеарне претраге у случају великих скупова података.

Погледајмо разлике у табеларном облику.

Основа поређења Линеарна претрага Бинарно претраживање
Дефиниција Линеарна претрага почиње претрагу од првог елемента и упоређује сваки елемент са траженим елементом све док елемент није пронађен. Проналази позицију траженог елемента проналажењем средњег елемента низа.
Сортирани подаци У линеарном претраживању, елементи не морају бити поређани у сортираном редоследу. Предуслов за бинарно претраживање је да елементи морају бити поређани у сортираном редоследу.
Имплементација Линеарна претрага се може применити на било коју линеарну структуру података као што је низ, повезана листа итд. Имплементација бинарног претраживања је ограничена јер се може имплементирати само на оним структурама података које имају двосмерни прелаз.
Приступ Заснован је на секвенцијалном приступу. Заснован је на приступу завади па владај.
Величина Пожељно је за скупове података мале величине. Пожељно је за скупове података велике величине.
Ефикасност Мање је ефикасан у случају великих скупова података. Ефикаснији је у случају великих скупова података.
Најгори сценарио У линеарном претраживању, најгори сценарио за проналажење елемента је О(н). У бинарној претрази, најгори сценарио за проналажење елемента је О(лог2н).
Најбољи сценарио У линеарном претраживању, најбољи сценарио за проналажење првог елемента на листи је О(1). У бинарној претрази, најбољи сценарио за проналажење првог елемента на листи је О(1).
Димензионални низ Може се имплементирати и на једнодимензионални и на вишедимензионални низ. Може се имплементирати само на вишедимензионални низ.