Найти в Дзене
1 месяц назад
 • Вы подписаны

Чем отличаются ссылки от указателей?

Разберем, чем различаются ссылки указатели в С++, что это такое и чем могут быть полезны. Указатель — это переменная, которая хранит адрес другой переменной в памяти. Ключевые особенности: &a — это временное значение (r‑value): оно даёт адрес переменной, но его нельзя сохранить или изменить. int* ptr — это переменная‑указатель: она может хранить адрес, менять его и использоваться многократно. В конструкции int* ptr звёздочка — часть типа данных. Она говорит компилятору: «переменная ptr — это не обычное целое число, а указатель на целое число»...

2 месяца назад
 • Вы подписаны

Абстрактные классы, виртуальные методы и полиморфизм

В этой статье разберем ключевые инструменты для реализации полиморфизма (одного из трёх столпов ООП наряду с инкапсуляцией и наследованием) на примере языка С++ — абстрактные классы и виртуальные методы. Виртуальный метод — метод класса, который может быть переопределён в классе‑наследнике. При вызове через указатель или ссылку на базовый класс выполняется версия метода из производного класса. Как работает: Абстрактный класс — класс, который: Ключевые особенности: Создадим класс Person c полями спецификатора protected — name и age...

2 месяца назад
 • Вы подписаны

На канале уже выпущены две статьи про бинарный поиск и бинарные деревья. Но что же значит «Бинарный»? Давайте разберемся. «Бинарный» происходит от латинского binarius — «двойной». В информатике это означает «состоящий из двух частей» или «имеющий два варианта». Ключевые идеи: * два варианта: да/нет, 0/1, левое/правое; * выбор между двумя возможностями на каждом шаге. Бинарный поиск — алгоритм поиска элемента в отсортированном массиве, где на каждом шаге мы: 1. Смотрим на средний элемент массива. 2. Сравниваем его с искомым значением. 3. Отбрасываем половину массива (левую или правую) — в зависимости от результата сравнения. 4. Повторяем шаги 1–3 для оставшейся половины. Почему «бинарный»: на каждом шаге выбор сводится к двум вариантам: - искомое значение находится в левой половине; - искомое значение находится в правой половине. Бинарное дерево — структура данных, где каждый узел имеет: - не более двух потомков (левого и правого); - значение в узле; - ссылки на левого и правого потомка (или null, если потомка нет). Бинарное дерево поиска добавляет правило упорядоченности: * значения в левом поддереве < значения в корне; * значения в правом поддереве > значения в корне. Почему «бинарное»: у каждого узла ровно два направления для движения: - идти влево (если ищем меньшее значение); - идти вправо (если ищем большее значение). Что общего? Оба метода используют один и тот же принцип: 1. на каждом шаге выбор между двумя вариантами; 2. исключение половины возможных вариантов; 3. быстрое сужение области поиска. Таким образом, Бинарный — значит основанный на двух элементах, вариантах или состояниях. Например, мы выбираем чай или кофе :)

2 месяца назад
 • Вы подписаны

Строим Бинарное дерево на Python без ООП

Эта статья посвящена сразу двум темам — рекурсии и бинарному дереву. Как и всегда с помощью несложных определений и пояснений разберем, что это такое и чем может быть полезно. Рекурсия — это когда функция вызывает саму себя внутри своего тела. Это способ решения задач, которые можно разбить на более мелкие подзадачи того же типа. Аналогия: представьте зеркало, поставленное напротив другого зеркала — вы видите бесконечное отражение. В программировании мы контролируем «глубину» этого отражения. Один...

2 месяца назад
 • Вы подписаны

Разбор бинарного поиска

В статье Просто об асимптотической сложности во втором примере я привёл один из самых известных алгоритмов поиска — бинарный поиск. Поэтому хотел бы его разобрать просто и наглядно в отдельной статье. Бинарный поиск — это способ быстро найти нужное значение в отсортированном списке (массиве), словно «разделяя пополам» область поиска. Посмотрим на алгоритм: Есть массив из 10 элементов с пронумерованными индексами от 0 до 9. Наша задача — найти число 23 (target). Задаем границы поиска: left = 0, right = длина массива - 1 = 9...

Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала
Поддержите автораПеревод на любую сумму
Покупайте СтеллыИ дарите их
за контент