/ / Бинарното търсене е един от най-лесните начини за намиране на елемент в масива

Двоичното търсене е един от най-лесните начини за намиране на елемент в масива.

Доста често програмисти, дори начинаещи,изправени пред факта, че има набор от числа, в които трябва да намерите определено число. Тази колекция се нарича масив. И за да намерите желания елемент в него, има огромно разнообразие от начини. Но най-простият сред тях с право може да се счита за двоично търсене. Какъв е даденият метод? И как да приложим двоично търсене? Pascal е най-лесната среда за организиране на такава програма, така че ще я използваме за проучване.

Първо, ще разгледаме предимствата на този метод, защото можем да разберем

двоично търсене
какъв е смисълът в изучаването на тази тема.Така че, да предположим, че има масив с измерение от поне 100 000 000 елемента, в който трябва да намерите конкретен. Разбира се, този проблем може лесно да бъде решен чрез обикновено линейно търсене, при което ще използваме цикъла, за да сравним желания елемент с всички тези в масива. Проблемът е, че реализирането на тази идея ще отнеме твърде много време. В обикновена програма Pascal за няколко процедури и с три реда от основния текст няма да забележите това, но когато започнете повече или по-малко големи проекти с голям брой клонове и добра функционалност, завършената програма ще отнеме твърде дълго време за зареждане. Особено, ако компютърът има слаба производителност. Следователно има двоично търсене, което намалява времето за търсене поне наполовина.

И така, какъв е принципът на товаметод? Струва си да се каже веднага, че двоичното търсене не работи във всеки масив, а само в подреден набор от числа. На всяка следваща стъпка се взима средният елемент от масива (което означава числото на елемента). Ако желаното число е по-голямо от средното, тогава всичко, което е отляво, тоест по-малко от средния елемент, може да бъде изхвърлено и не търсено там. И обратно, ако е по-малко от средното - сред тези числа вдясно, не можете да търсите. След това избираме нова зона за търсене, където първият елемент ще бъде средният елемент на целия масив, а последният ще остане последен. Средният брой на новия регион ще бъде ¼ на целия сегмент, тоест (последният елемент + средният елемент на целия масив) / 2. Отново се извършва същата операция - сравнение със средния брой на масива. Ако желаната стойност е по-малка от средната, изхвърляме дясната страна и правим същото по-нататък, докато не се намери този среден елемент.

двоичен паскал за търсене

Разбира се, най-добре е да погледнете пример как се пише двоично търсене. Pascal е подходящ за всеки тук - версията не е важна. Нека да напишем проста програма.

Той ще има масив от 1 до h, наречен"massiv", променлива, обозначаваща долната граница на търсенето, наречена "niz", горната граница, наречена "verh", средният елемент на търсенето е "sredn"; и номера, който търси ISK.

И така, първо задаваме горната и долната граница на интервала за търсене:

дъно: = 1;
verh: = h + 1;

След това организираме цикъла "докато долната е по-малка от горната граница":

Докато niz започвам

На всяка стъпка разделяме сегмента по 2:

sredn: = (niz + verh) div 2; {използвайте функция div, защото се разделяме без остатък}

Всеки път, когато проверяваме. Ако средната стойност е равна на желаната, прекъсваме цикъла, тъй като необходимия елемент вече е намерен:

иf sredn = isk, тогава прекъснете;

Ако средният елемент на масива е по-голям от желания, изхвърлете лявата страна, тоест присвойте средния елемент към горната граница:

ако massiv [sredn]> isk тогава verh: = sredn;

И ако напротив, тогава го правим долната граница:

else niz: = средно;
край;

Това е всичко, което ще бъде в програмата.

Нека да видим как ще изглежда бинарният метод на практика. Нека вземем масив по този начин: 1, 3, 5, 7, 10, 12, 18 и потърсим числото 12 в него.

Общо имаме 7 елемента, така че средата ще бъде четвъртата, стойността й е 7.

1357101218

Тъй като 12 е по-голямо от 7, можем да изхвърлим елементи 1,3 и 5. Тогава ни остават 4 числа, 4/2 без остатък е 2. Значи, новият среден елемент ще бъде 10.

7101218

двоичен паскал за търсене
Тъй като 12 е по-голямо от 10, изхвърляме 7. Остават само 10, 12 и 18.

Тук средният елемент е вече 12, това е желаното число. Задачата изпълнена - номер 12 намерен.

хареса:
0
Популярни публикации
Духовното развитие
храна
ш