Algoritmo che divide a meta' un array ordinato per cercare un elemento in tempo logaritmico.
Il pattern Binary Search permette di trovare rapidamente un elemento in una sequenza ordinata riducendo ogni volta lo spazio di ricerca a metà. È uno degli approcci più efficienti per interrogare array o intervalli numerici già ordinati.
Usa la ricerca binaria quando:
Variante | Descrizione |
---|---|
Iterativa | Utilizza un ciclo while senza ricorsione |
Ricorsiva | Chiama la funzione su metà dell'intervallo a ogni passo |
Bound search | Modifica della ricerca per ottenere l'indice di inizio o fine di un intervallo |
Leetcode 704. Binary Search
def binary_search(nums, target): left, right = 0, len(nums) - 1 while left <= right: mid = (left + right) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid - 1 return -1
✅ Complessità:
O(log n)
O(1)
nella versione iterativaNome | Difficoltà | Pattern | Link |
---|---|---|---|
Binary Search | Easy | Iterativa | Leetcode #704 |
First Bad Version | Easy | Ricorsiva | Leetcode #278 |
Search Insert Position | Easy | Bound search | Leetcode #35 |
Find Minimum in Rotated Sorted Array | Medium | Modificata | Leetcode #153 |
Search a 2D Matrix | Medium | Iterativa | Leetcode #74 |
left + (right - left) // 2
per evitare overflowRicevi tips settimanali, nuovi pattern e aggiornamenti esclusivi per migliorare costantemente le tue skills algoritmiche
No spam, unsubscribe anytime. Privacy policy compliant.