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 iterativa| Nome | 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.