Перейти к основному содержимому

· 7 мин. чтения

1. Обзор

В этом уроке мы поговорим о том, что означает нотация Big O. Мы рассмотрим несколько примеров, чтобы исследовать их влияние на время выполнения вашего кода.

2. Интуиция нотации большого O

Мы часто слышим о производительности алгоритма, описанного с помощью Big O Notation .

Изучение производительности алгоритмов — или алгоритмической сложности — относится к области анализа алгоритмов . Алгоритмический анализ отвечает на вопрос, сколько ресурсов, таких как дисковое пространство или время, потребляет алгоритм.

· 4 мин. чтения

1. Введение

В этой статье мы рассмотрим, как создавать перестановки массива .

Во-первых, мы определим, что такое перестановка. Во-вторых, мы рассмотрим некоторые ограничения. И в-третьих, мы рассмотрим три способа их вычисления: рекурсивный, итеративный и случайный.

Мы сосредоточимся на реализации на Java и поэтому не будем вдаваться в математические подробности.

2. Что такое перестановка?

· 3 мин. чтения

1. Обзор

В этом руководстве мы реализуем различные решения проблемы поиска k самых больших элементов в массиве с помощью Java. Для описания временной сложности мы будем использовать нотацию Big-O .

2. Решение грубой силы

Грубое решение этой проблемы состоит в том, чтобы перебрать заданный массив k раз . На каждой итерации мы будем находить наибольшее значение . Затем мы удалим это значение из массива и поместим в выходной список:

public List findTopK(List input, int k) {
List array = new ArrayList<>(input);
List topKList = new ArrayList<>();

for (int i = 0; i < k; i++) {
int maxIndex = 0;

for (int j = 1; j < array.size(); j++) {
if (array.get(j) > array.get(maxIndex)) {
maxIndex = j;
}
}

topKList.add(array.remove(maxIndex));
}

return topKList;
}

· 5 мин. чтения

1. Обзор

Сбалансированные скобки, также известные как сбалансированные скобки, являются распространенной проблемой программирования.

В этом уроке мы проверим, сбалансированы ли скобки в данной строке или нет.

Этот тип строк является частью того, что известно как язык Дайка .

2. Постановка задачи

· 3 мин. чтения

1. Обзор

Деревья — одна из самых важных структур данных в информатике. Обычно нас интересует сбалансированное дерево из-за его ценных свойств . Их структура позволяет выполнять такие операции, как запросы, вставки, удаления за логарифмическое время.

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

2. Определения

Во-первых, давайте введем несколько определений, чтобы убедиться, что мы находимся на одной странице:

· 5 мин. чтения

1. Обзор

В этой статье мы рассмотрим преимущества бинарного поиска по сравнению с простым линейным поиском и рассмотрим его реализацию на Java.

2. Необходимость эффективного поиска

Допустим, мы занимаемся продажей вина, и миллионы покупателей посещают наше приложение каждый день.

Через наше приложение клиент может отфильтровать товары, цена которых ниже n долларов, выбрать бутылку из результатов поиска и добавить их в свою корзину. У нас есть миллионы пользователей, каждую секунду ищущих вина по ограниченной цене. Результаты должны быть быстрыми.

· 6 мин. чтения

1. Обзор

В этом уроке мы рассмотрим Java-реализацию алгоритма Борувки для нахождения минимального остовного дерева (MST) графа, взвешенного по ребрам .

Он предшествует алгоритмам Прима и Крускала , но все же может считаться чем-то средним между ними.

2. Алгоритм Борувки

Мы сразу перейдем к алгоритму. Давайте посмотрим немного на историю, а затем на сам алгоритм.

· 7 мин. чтения

1. Обзор

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

Во-первых, мы рассмотрим немного теории об этом алгоритме для деревьев и графов. После этого мы углубимся в реализацию алгоритмов на Java. Наконец, мы рассмотрим их временную сложность.

2. Алгоритм поиска в ширину

Основной подход алгоритма поиска в ширину (BFS) заключается в поиске узла в структуре дерева или графа путем изучения соседей до потомков.

· 4 мин. чтения

1. Введение

В этой быстрой статье мы подробно рассмотрим алгоритм пузырьковой сортировки, сосредоточив внимание на реализации Java.

Это один из самых простых алгоритмов сортировки; основная идея состоит в том, чтобы продолжать менять местами соседние элементы массива, если они находятся в неправильном порядке, до тех пор, пока коллекция не будет отсортирована.

Мелкие элементы «всплывают» в верхней части списка по мере того, как мы итерируем структуру данных. Следовательно, этот метод известен как пузырьковая сортировка.

Поскольку сортировка выполняется путем замены, мы можем сказать, что она выполняет сортировку на месте.

Кроме того, если два элемента имеют одинаковые значения, порядок результирующих данных будет сохранен, что делает сортировку стабильной .

· 3 мин. чтения

1. Введение

В этой статье мы углубимся в алгоритм сортировки ведра . Мы начнем с небольшой теории, прежде чем работать над реализацией Java наряду с модульным тестированием нашего решения. Наконец, мы рассмотрим временную сложность сортировки ведра.

2. Теория сортировки ведрами

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

Давайте кратко рассмотрим шаги, необходимые для выполнения сортировки ведра :