--- title: Linear Search localeTitle: Линейный поиск --- ## Линейный поиск Предположим, вам предоставлен список или массив элементов. Вы ищете определенный предмет. Как ты это делаешь? Найдите номер 13 в данном списке. ![Линейный поиск 1](https://i.imgur.com/ThkzYEV.jpg) Вы просто смотрите на список, и вот он! ![Линейный поиск 2](https://i.imgur.com/K7HfCly.jpg) Теперь, как вы говорите компьютеру, чтобы его найти. Компьютер не может смотреть больше, чем значение в данный момент времени. Поэтому он берет один элемент из массива и проверяет, совпадает ли он с тем, что вы ищете. ![Линейный поиск 3](https://i.imgur.com/ZOSxeZD.jpg) Первый элемент не совпал. Поэтому переходите к следующему. ![Линейный поиск 4](https://i.imgur.com/SwKsPxD.jpg) И так далее… Это делается до тех пор, пока не будет найдено совпадение или пока все элементы не будут проверены. ![Линейный поиск 5](https://i.imgur.com/3AaViff.jpg) В этом алгоритме вы можете остановиться, когда элемент найден, и тогда нет необходимости смотреть дальше. Итак, сколько времени потребуется на операцию линейного поиска? В лучшем случае вам может повезти, и предмет, на который вы смотрите, может быть, на первой позиции в массиве! Но в худшем случае вам придется смотреть на каждый элемент, прежде чем вы найдете элемент на последнем месте или до того, как осознаете, что элемент не находится в массиве. Поэтому сложность линейного поиска заключается в следующем: O (n). Если элемент, подлежащий поиску, возглавляет первый блок памяти, тогда сложность будет: O (1). Код для функции линейного поиска в JavaScript показан ниже. Эта функция возвращает позицию элемента, который мы ищем в массиве. Если элемент отсутствует в массиве, функция возвращает null. ### Пример в Javascript ```javascript function linearSearch(arr, item) { // Go through all the elements of arr to look for item. for (var i = 0; i < arr.length; i++) { if (arr[i] === item) { // Found it! return i; } } // Item not found in the array. return null; } ``` ### Пример в Ruby ```ruby def linear_search(target, array) counter = 0 while counter < array.length if array[counter] == target return counter else counter += 1 end end return nil end ``` ### Пример в C ++ ```c++ int linear_search(int arr[],int n,int num) { for(int i=0;i