logo

Алгоритам бинарне претраге у Ц

Брза метода за лоцирање одређеног елемента у сортираном низу је бинарна претрага. Почетни задатак овог алгоритма је да упореди циљну вредност са средњим елементом низа. Претрага се сматра успешном ако је циљна вредност садржана у средњем елементу. Алгоритам ће изгледати у левој половини низа ако је вредност циља мања од централног елемента. Програм ће скенирати десну половину низа ако је циљна вредност већа од централног елемента. Овај метод се понавља све док се не исцрпи вредност циља или опсег претраге.

Употреба:

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

ф филмовима

карактеристике:

  • Низ улазних вредности мора бити сортиран.
  • Са сваком итерацијом, метода смањује опсег претраге за половину, што га чини посебно ефикасним за огромне скупове података.
  • Алгоритам има О (лог н) временску сложеност у најгорем случају.
  • Проналажење жељене вредности врши програм користећи стратегију завади па владај.

Ево једноставног примера алгоритма бинарне претраге написаног у Ц:

 #include int binary_search(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right - left) 2; if (arr[mid]="=" target) return mid; } else < left="mid" 1; right="mid" -1; target not found main() arr[]="{1," 3, 5, 7, 9}; n="sizeof(arr)" sizeof(arr[0]); index="binary_search(arr," 0, 1, target); (index="=" -1) printf('target found
'); at %d
', index); 0; pre> <p> <strong>Output:</strong> </p> <pre> Target found at index 2 </pre> <ul> <li>The binary_search function accepts four arguments: the array to search, the left and right search range boundaries, and the target value to look for. The function returns its index if the desired value can be found; else, it returns -1.</li> <li>The main function creates an array arr and a value target. The binary_search function is then used to search the array for the desired value. The function returns the index where the target value was located if it was, the function returns the index at which it was found. Otherwise, the message &apos;Target not found&apos; is displayed.</li> <li>The binary search algorithm&apos;s implementation is basic. We begin by setting the left border to the array&apos;s initial index and the right boundary to the array&apos;s last index. Once the left boundary is less than or equal to the right border, the array is looped through one more time. We use the formula (left + right) / 2 within the loop to calculate the middle index of the search range. This formula computes the integer value of the middle index&apos;s floor.</li> <li>The centre member of the array is contrasted with the target value. We return the index of the middle element if they are equal. We change the right boundary to be one less than the middle index if the desired value is less than the middle element. If not, we adjust the left border so that it is one more than the centre index. We continue doing this until the goal value is obtained or the search space is filled.</li> <li>The temporal complexity of the binary search algorithm, where n is the array size, is O(log n). This is far more efficient than linear search, which has a temporal complexity of O(n), where n is the size of the array.</li> <li>Finally, the binary search technique offers a useful way to locate a particular member in a sorted array. It is easy to build and has an O(log n) time complexity, making it an efficient approach for large datasets.</li> </ul> <h3>Advantages:</h3> <ul> <li>For large datasets, the binary search algorithm is exceptionally efficient, and it is capable of handling a wide range of input sizes.</li> <li>The algorithm is simple to implement in almost all programming languages.</li> </ul> <h3>Disadvantages:</h3> <ul> <li>Before using the binary search technique, the input array must be sorted, which takes more time and memory.</li> <li>The algorithm cannot be applied to unsorted arrays.</li> <li>The algorithm may yield inaccurate results if the input array is not sorted.</li> <li>The binary search algorithm is not appropriate for tiny datasets since the technique&apos;s overhead may outweigh its benefits.</li> </ul> <h2>Conclusion:</h2> <p>A sorted array can be quickly searched for a specific element using the binary search technique. It employs a divide-and-conquer strategy to cut the search range in half with each iteration, allowing it to be highly efficient for large datasets. However, before using the binary search technique, the input array must be sorted, which takes extra time and memory. The binary search algorithm is a sophisticated data processing tool that is widely utilised in various sectors.</p> <hr></=>
  • Функција бинари_сеарцх прихвата четири аргумента: низ за претрагу, леву и десну границу опсега претраге и циљну вредност коју треба тражити. Функција враћа свој индекс ако се може пронаћи жељена вредност; иначе, враћа -1.
  • Главна функција креира низ арр и циљну вредност. Функција бинари_сеарцх се затим користи за тражење жељене вредности у низу. Функција враћа индекс где се налазила циљна вредност ако је била, функција враћа индекс на коме је пронађена. У супротном, приказује се порука 'Циљ није пронађен'.
  • Имплементација алгоритма бинарне претраге је основна. Почињемо тако што постављамо леву границу на почетни индекс низа, а десну на последњи индекс низа. Када је лева граница мања или једнака десној ивици, низ се провлачи још једном. Користимо формулу (лево + десно) / 2 унутар петље да израчунамо средњи индекс опсега претраге. Ова формула израчунава целобројну вредност прага средњег индекса.
  • Централни члан низа је у супротности са циљном вредношћу. Враћамо индекс средњег елемента ако су једнаки. Ми мењамо десну границу да буде за један мањи од средњег индекса ако је жељена вредност мања од средњег елемента. Ако није, подешавамо леву ивицу тако да буде један више од индекса центра. Настављамо са овим све док се не добије вредност циља или док се не попуни простор за претрагу.
  • Временска сложеност алгоритма бинарног претраживања, где је н величина низа, је О(лог н). Ово је далеко ефикасније од линеарне претраге, која има временску сложеност од О(н), где је н величина низа.
  • Коначно, техника бинарне претраге нуди користан начин за лоцирање одређеног члана у сортираном низу. Лако га је изградити и има О(лог н) временску сложеност, што га чини ефикасним приступом за велике скупове података.

Предности:

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

Недостаци:

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

Закључак:

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