Quale algoritmo ha una complessità lineare O(n)?
sobes.tech AI
Risposta dell'AI
Un algoritmo con complessità lineare O(n) significa che il tempo di esecuzione o la memoria utilizzata crescono proporzionalmente alla dimensione dei dati di input n. Alcuni esempi di tali algoritmi sono:
-
Ricerca dell'elemento massimo o minimo in un array: È necessario attraversare tutti gli elementi dell'array una volta.
# Ricerca dell'elemento massimo def find_max(arr): if not arr: return None max_val = arr[0] for element in arr: if element > max_val: max_val = element return max_val -
Ricerca lineare: Ricerca di un elemento specifico in una lista non ordinata tramite scansione sequenziale.
// Ricerca lineare public int linearSearch(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (arr[i] == target) { return i; // Elemento trovato } } return -1; // Elemento non trovato } -
Contare la frequenza degli elementi in una lista: Per questo bisogna attraversare la lista una volta, usando ad esempio una tabella hash o un dizionario.
// Contare la frequenza function countFrequency(arr) { const frequency = {}; for (const element of arr) { frequency[element] = (frequency[element] || 0) + 1; } return frequency; } -
Copia semplice di un array: Creare una nuova copia dell'array attraversando tutti gli elementi dell'array originale.
-
Calcolare la somma di tutti gli elementi in un array: Richiede di attraversare tutti gli elementi una volta.
In tutti questi esempi, il numero di operazioni è direttamente proporzionale al numero di elementi nei dati elaborati.