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

117 записей с тегом "Алгоритмы"

Посмотреть все теги

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

1. Обзор

В этом коротком руководстве мы увидим, как можно эффективно объединить отсортированные массивы с помощью кучи.

2. Алгоритм

Поскольку наша постановка задачи заключается в использовании кучи для объединения массивов, мы будем использовать мини-кучу для решения нашей проблемы. Минимальная куча — это не что иное, как бинарное дерево, в котором значение каждого узла меньше значений его дочерних узлов .

Обычно min-heap реализуется с использованием массива, в котором массив удовлетворяет определенным правилам, когда речь идет о поиске родителя и потомка узла.

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

1. Обзор

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

2. Подход грубой силы

В этом подходе мы просто перебираем входную строку, чтобы найти все подстроки. Заодно проверим, является подстрока палиндромом или нет:

public Set<String> findAllPalindromesUsingBruteForceApproach(String input) {
Set<String> palindromes = new HashSet<>();
for (int i = 0; i < input.length(); i++) {
for (int j = i + 1; j <= input.length(); j++) {
if (isPalindrome(input.substring(i, j))) {
palindromes.add(input.substring(i, j));
}
}
}
return palindromes;
}

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

1. Обзор

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

2. Сопоставление строк с образцом

2.1. Определение

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

1. Введение

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

2. Минимальное остовное дерево

Минимальное остовное дерево (MST) — это взвешенный неориентированный связный граф, общий вес ребер которого минимизирован за счет удаления более тяжелых ребер . Другими словами, мы сохраняем все вершины графа нетронутыми, но можем удалить некоторые ребра, чтобы сумма всех ребер была минимальной.

Начнем со взвешенного графа, так как нет смысла минимизировать общий вес ребер, если эти ребра вообще не имеют веса. Давайте посмотрим на пример графика:

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

1. Введение

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

Естественно, существует множество типов треугольников. Здесь мы рассмотрим только пару из них: прямоугольный и равнобедренный треугольники.

2. Построение прямоугольного треугольника

Прямоугольный треугольник — простейший тип треугольника, который мы собираемся изучить. Давайте быстро посмотрим на результат, который мы хотим получить:

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

1. Обзор

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

Мы также обсудим его преимущества и недостатки, а затем проанализируем его временную сложность.

2. Алгоритм быстрой сортировки

Quicksort — это алгоритм сортировки, использующий принцип «разделяй и властвуй » . Он имеет среднюю сложность O(n log n) и является одним из наиболее часто используемых алгоритмов сортировки, особенно для больших объемов данных.

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

1. Введение

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

Здесь мы сосредоточимся на использовании Radix Sort для сортировки целых чисел, но не ограничиваемся только числами. Мы также можем использовать его для сортировки других типов, таких как String .

Для простоты мы сосредоточимся на десятичной системе, в которой числа выражаются по основанию (основанию) 10.

2. Обзор алгоритма

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

1. Обзор

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

2. Одномерный поиск против двумерного поиска

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

Давайте теперь рассмотрим двумерную область, где каждый элемент представлен координатами XY (точками) на плоскости .

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

1. Введение

В этом руководстве мы реализуем два алгоритма обращения связанных списков на Java.

2. Структура данных связанного списка****

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

./e92d361de8f58a26a7b95a176a61388a.png

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

1. Введение

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

2. Обзор алгоритма

Сортировка выбором начинается с элемента в 1 ^-й позиции несортированного массива и просматривает последующие элементы, чтобы найти наименьший элемент . После нахождения наименьший элемент заменяется элементом в 1 ^-й позиции.

Затем алгоритм переходит к элементу во 2- ^й позиции и просматривает последующие элементы, чтобы найти индекс 2- ^го наименьшего элемента. После нахождения второй наименьший элемент заменяется элементом на 2- ^й позиции.