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

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

1. Введение

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

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

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

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

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

1. Обзор

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

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

2. Объяснение проблемы

Во-первых, давайте объясним, какова цель алгоритма. Мы хотим найти наименьшее пропущенное положительное целое число в массиве положительных целых чисел. То есть в массиве из x элементов найдите наименьший элемент между 0 и x – 1 , которого нет в массиве. Если массив содержит их все, то решением является x , размер массива.

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

1. Введение

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

Мы рассмотрим распространенные пограничные случаи, включая пустые String и недопустимые числа.

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

2. Описание проблемы

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

1. Обзор

Сложность алгоритмов во время выполнения часто зависит от характера входных данных.

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

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

2. Тривиальная быстрая сортировка

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

1. Обзор

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

2. Связующее дерево

Остовное дерево неориентированного графа — это связный подграф, покрывающий все вершины графа с минимально возможным числом ребер. В общем случае граф может иметь более одного остовного дерева. На следующем рисунке показан граф с остовным деревом (ребра остовного дерева выделены красным):

./853fa0144788fa1939e4b44ca0bf8d0a.png

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

1. Обзор

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

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

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

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

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

1. Обзор

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

Вот простой пример: « Фермер Джек понял, что большие желтые одеяла стоят дорого. ” – который на самом деле содержит все буквы алфавита.

Мы обсудим три подхода.

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

Кроме того, мы обсудим большую сложность используемых подходов.

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

1. Обзор

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

Далее мы реализуем решения на Java. Первым решением будет простая атака грубой силы. Второй будет использовать технику Dancing Links .

Имейте в виду, что основное внимание мы сосредоточим на алгоритмах, а не на дизайне ООП.

2. Головоломка судоку

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

1. Обзор

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

2. Описание техники

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

Чтобы решить подобные проблемы, мы обычно начинаем с первого индекса и перебираем массив один или несколько раз в зависимости от нашей реализации. Иногда нам также приходится создавать временный массив в зависимости от требований нашей задачи.