Кой алгоритъм има линейна сложност O(n)?
sobes.tech AI
Отговор от AI
Алгоритъм с линейна сложност O(n) означава, че времето за изпълнение или използваната памет расте пропорционално на размера на входните данни n. Примери за такива алгоритми са:
-
Търсене на максималния или минималния елемент в масив: Трябва да преминете през всички елементи на масива веднъж.
# Търсене на максималния елемент 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 -
Линейно търсене: Търсене на определен елемент в неупорядочен списък чрез последователно преглеждане.
// Линейно търсене public int linearSearch(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (arr[i] == target) { return i; // Елементът е намерен } } return -1; // Елементът не е намерен } -
Броене на честотата на елементите в списък: За това трябва да преминете през списъка веднъж, използвайки например хеш таблица или речник.
// Броене на честотата function countFrequency(arr) { const frequency = {}; for (const element of arr) { frequency[element] = (frequency[element] || 0) + 1; } return frequency; } -
Просто копиране на масив: Създаване на ново копие на масива чрез преминаване през всички елементи на оригиналния масив.
-
Изчисляване на сумата на всички елементи в масива: Изисква еднократно преминаване през всички елементи.
Във всички тези примери броят на операциите е директно пропорционален на броя на елементите в обработваните данни.