logo

Căutare binară folosind recursiunea în Python

Am împărțit o colecție de articole în două jumătăți în Căutarea binară pentru a reduce numărul de comparații directe necesare pentru a descoperi un element. Cu toate acestea, există o cerință: elementele matricei trebuie sortate în prealabil.

dubla în java

Căutare binară

The Căutare binară Metoda localizează indexul unui anumit membru al listei. Este printre cei mai populari și mai rapidi algoritmi. Pentru ca procedura de căutare binară să funcționeze, intrările din listă ar trebui să fie sortate.

Căutare binară este o tehnică de căutare mai eficientă pentru localizarea indexului unui element decât Căutare liniară deoarece nu trebuie să examinăm fiecare index de listă.

Întreaga operațiune a algoritmului de căutare binar poate fi rezumată în următorii pași:

  • Localizați elementul din mijloc în tabloul sortat.
  • Faceți o comparație între elementul de localizat și elementul din mijloc.
  • Dacă acel element este egal cu elementul din mijloc al listei date, atunci indexul elementului din mijloc este returnat. În caz contrar, algoritmul va compara elementul cu elementul din mijloc.
  • Acum, dacă elementul de localizat este mai mare decât elementul din mijloc al listei, acesta va fi comparat cu jumătatea dreaptă a listei, adică elementele după indexul din mijloc.
  • Sau dacă elementul este mai mic decât elementul din mijlocul listei, atunci va fi comparat doar cu jumătatea din stânga a listei, adică elementele dinaintea indexului din mijloc.

Căutare binară recursiv

Căutarea binară implică împărțirea continuă a intervalului de căutare în 2 părți egale pentru a descoperi un element într-o matrice sortată, iar Căutarea binară recurentă presupune defalcarea completă a procedurii de căutare binară în probleme mai mici. O căutare binară recursivă este răspunsul recursiv la o căutare binară.

linux $home

Următoarele sunt caracteristicile pe care trebuie să le îndeplinească soluțiile toate recursive:

  1. Un caz de bază este necesar pentru o abordare recursivă.
  2. Trebuie să existe un caz de testare recursiv într-o abordare recursivă.
  3. O abordare recursivă trebuie să se apropie de cazul de bază.

Cea mai mică subdiviziune a unei probleme complicate este reprezentată de un caz de bază, care este un caz final. Deci, pentru a efectua căutarea binară prin metoda recursivă, algoritmul nostru trebuie să conțină un caz de bază și un caz recursiv, cu cazul recursiv progresând la cazul de bază. Altfel, procesul nu s-ar termina niciodată și ar rezulta într-o buclă nesfârșită.

Tehnica de căutare binară reduce timpul necesar pentru a găsi un anumit element într-o matrice sortată. Metoda de căutare binară este adesea implementată în mod iterativ, dar o putem implementa și recursiv, împărțind-o în bucăți mai mici.

panta nedefinita

Cod

 #defining a function to execute Binary Search on any given sorted list L. #start is the lowest index of the list being checked at any given time. #end is the highest index of the list being checked at any given time. #item is the item to be searched in the list. def binary_search(L, start, end, item): if end >= start: middle = (start + end) // 2 if L[middle] == item: return middle #middle element is the item to be located #if middle item is greater than the item to be searched, left side of the list will be searched elif L[middle] > item: #starting index will be same but ending index will be the middle of the main list i.e. left half of the list is given in function. return binary_search(L, start, middle - 1, item) else: #if middle item is smaller than the item to be searched, new starting index will be middle of the list i.e. right half of the list. return binary_search(L, middle + 1, end, item) else: #if element is not present in the list return -1 #Drivers code my_list = [ 2, 4, 6, 9, 12, 16, 18, 19, 20, 21, 22 ] element_to_search = 6 print('The given list is') print(my_list) index_of_element = binary_search(my_list, 0, len(my_list)-1, element_to_search) if index_of_element != -1: print('Element searched is found at the index ', str(index_of_element), 'of given list') else: print('Element searched is not found in the given list!') 

Ieșire:

 The given list is [2, 4, 6, 9, 12, 16, 18, 19, 20, 21, 22] Element searched is found at the index 2 of given list 

Recursiunea este o tehnică de programare și de rezolvare a problemelor extrem de puternică. Îl putem folosi pentru a evalua și executa o varietate de algoritmi, de la probleme simple iterative până la probleme complicate de backtracking. În acest tutorial, ne-am uitat la utilizarea limbajului Python pentru a crea metoda de căutare binară recursivă.