До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

Главная | Все статьи | Дневник студента

PHP. Изучение алгоритмов. Линейный поиск

Время чтения статьи ~1 минута
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
PHP. Изучение алгоритмов. Линейный поиск главное изображение

В серии статей по алгоритмам поиска я рассматриваю различные виды поиска и их реализации на языке PHP. Алгоритмы поиска в мире PHP разработки не так сильно важны, поскольку уже есть множество реализаций, но базовые вещи и их устройства необходимо знать, чтобы оценивать на сложность свой код и выбирать оптимальные решения.

В первой статье серии алгоритмов поиска на PHP рассматривается самый простой алгоритм поиска - линейный.

Линейный или последовательный — это самый простой поиск, так как предварительной подготовки массива не требуется, а поиск осуществляется путем сравнения каждого элемента с искомым значением. Поиск завершится возвратом индекса элемента, а если он не найден, то вернется -1. Хотя тут спорный момент, что возвращать, в случае, если ничего не нашлось. Оставим это на усмотрение разработчика.

Сложность этого алгоритма составляет O(N). По поводу того, как высчитывается сложность, можно почитать в этой статье. Стоит отметить, что данный поиск показывает наибольшую эффективность только для массивов длиной не более 100 элементов.

Давайте напишем класс, который будет помогать в реализации разных видов поиска.

<?php
declare(strict_types = 1);
class ArraySearch {
    /**
     * Ищет индекс элемента в массиве.
     *
     * @param array $array Массив данных
     * @param mixed $value Искомое значение
     *
     * @return int Возвращает индекс найденного элемента или -1, если элемент не был найден
     */
    public static function linear(array $array, $value): int {
        foreach ($array as $index => $indexValue) {
            if ($indexValue === $value) {
                return $index;
            }
        }
        return -1;
    }
}

Теперь, запустим тест и увидим, что для массива со значениями от 1 до 10 и искомым значением 8, индекс будет равен 7, а для значения 11 индекс будет равен -1.

З.Ы. А еще я веду свой блок в ВК. Если будет интересно, то забегайте.

Аватар пользователя Максим Епихин
Максим Епихин 02 декабря 2022
0
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября