Рубрики
Без рубрики

Структура данных и алгоритмы: Линейный поиск

Что такое Поиск? В информатике поиск – это “процесс поиска элемента с помощью… Помечено структурой данных, алгоритмами, java, линейным поиском.

В информатике поиск – это “процесс поиска элемента с заданными свойствами из коллекции элементов”. Элементом может быть что угодно – от сохраненной записи или элемента массива до элементов других пространств поиска.

Но зачем нам нужен Поиск?

Ответ таков – найти данные, которые вы ищете, из большого набора данных. Например, поиск номера телефона вашего друга из длинного списка контактов можно упростить с помощью алгоритмов поиска. Здесь список контактов представляет собой набор элементов и номер вашего друга – это данные с указанным свойством.

Некоторыми примерами алгоритмов поиска являются Линейный поиск, Двоичный поиск, Интерполяционный поиск и т.д. Здесь мы обсудим Линейный поиск.

Линейный поиск – это простой алгоритм поиска, который последовательно проверяет каждый элемент в коллекции. Если совпадение найдено, товар возвращается, в противном случае поиск продолжается до конца коллекции. Предположим, что вам дан массив, в котором порядок элементов неизвестен. В этом случае вам придется просмотреть каждый элемент массива, чтобы найти элемент с указанным свойством.

Алгоритм может быть написан следующим образом:

  • Дан массив Arr и элемент , который нужно найти данные .

  • Проверьте первый элемент. Если оно равно данным, верните позицию первого элемента. В противном случае проверьте наличие следующего элемента.

  • Проверяйте до тех пор, пока не будет сравнен последний элемент.

  • Если данные не найдены в массиве, верните значение -1. Этот тип линейного поиска называется неупорядоченным линейным поиском

public int unorderedLinearSearch(int[] Arr, int data)
{
    for(int i=0; i

Временная сложность: O(n), в худшем случае мы сканируем весь массив. Сложность пространства: O(1)

Теперь, если массив Arr отсортирован, т.е. мы знаем порядок элементов, мы можем выполнить поиск следующим образом:

Этот случай называется упорядоченным линейным поиском

public int orderedLinearSearch(int[] Arr, int data)
{
    for(int i=0; i data)
             return -1;
} 
    return -1;
}

Мы можем дополнительно оптимизировать временную сложность для случаев, когда данные являются:

  • в последней позиции в массиве от O(n) до O(1) или,
  • отсутствует в массиве, от O(n) до (n/2) путем проверки элементов слева и справа.
public int optimiseLinearSearch(int[] Arr, int data)
{
    int left = 0; 
    int length = Arr.length; 
    int right = length - 1; 
    int position = -1; 

    for (left = 0; left <= right;){

         if (Arr[left] == search_Element)  
            { 
                position = left; 
                System.out.println(position); 
                break; 
            } 

         if (Arr[right] == search_Element)  
            { 
                position = right; 
                System.out.println(position); 
                break; 
            } 

            left++; 
            right--; 
     } 
        if (position == -1) 
            System.out.println("data not found"); 
    } 
}

Поздравляю! Теперь вы знаете, что такое алгоритмы поиска и как реализован алгоритм линейного поиска.

В следующем блоге мы рассмотрим еще несколько концепций структур данных и алгоритмов!

Соединитесь со мной Твиттер LinkedIn

Спасибо Вам за чтение! 😃

Оригинал: “https://dev.to/priya730/data-structure-and-algorithms-linear-search-48g3”