BinarySearchTree

Двоичное дерево поиска, или BST, — это структура данных, предназначенная для работы с упорядоченными множествами. Свойство дерева: если мы находимся в вершине с ключом k, то в левом поддереве находятся только ключи, которые строго меньше k, а в правом — строго больше. Описание методов, реализованных в классе BinarySearchTree: метод add(): если дерево пустое, то говорим, … Continue reading

Обратная польская нотация

Передо мной стояли задачи: перевести выражение в обратную польскую нотацию; посчитать значение выражения. Также я реализовала унарный минус, деление и функции cube(), sqrt(), pow10(). Выражение Обратная польская нотация Результат 15 * -(3 — 4) 15 3 4 — u- * 15 sqrt(4) + (8 * 0.5) 4 sqrt 8 0.5 * + 6 -cube(-3) 3 … Continue reading

Segmented Array

Задача Необходимо реализовать некоторую коллекцию индексированных данных некоторого типа T, выглядящую как несколько необычный массив. Вместо операции присваивания значения элементу массива в нём имеется операция присваивания одинаковых значений всем элементам для некоторого диапазона индексов. Также и операции поиска минимума и максимума должны работать для некоторого диапазона значений индексов. При написании класса, реализующего данный интерфейс необходимо … Continue reading

Двоичное дерево поиска

Задача Реализовать структуру «Двоичное дерево поиска» в соответствии с этим шаблоном. Решение По моему субъективному мнению, тут следует привести более ли менее детальное описание только операций вставки и удаления вершины. Операция вставки Пусть у нас есть вершина с ключом [latex]key[/latex] и дерево [latex]T[/latex], в которое нам нужно вставить нашу вершину. Сразу у нас есть ссылка … Continue reading

Java Collections Framework: Map. Частотный словарь.

Задача 1: Получив на входе корпус языка (огромный набор атрибутированных текстов на каком-нибудь языке) построить частотный словарь. Знаки препинания, скобки, кавычки и числа должны быть удалены. Слова, содержащие в себе не буквенные символы, игнорируются целиком. Задача 2: При автоматическом переводе необходимо из нескольких слов выбрать наиболее употребительное. Необходимо построить эффективную реализацию функции, которая для данного … Continue reading

BigSegmentedArray by Tolia

Мне предоставили реализовать класс, который наследует SegmentedArray и характеризуется следующим: принимает большой массив частые запросы get(), min(); Поскольку команда set задает значение на интервале, я решил сделать «дерево отрезков». Которое устроено как бинарное дерево относительно индекса (в задании большое количество запросов get(), следовательно будет быстрее искать элемент по индексу), имея в себе левый и правые концы … Continue reading

Binary Tree Search

Код реализация Бинарного дерева на Java для задания из Word of Week. Саму идею дерева и теоретический алгоритм можно почитать в Википедии. Отличается от реализации на C++ тем, что в Java мы не обращаемся к адресам узлам явно, сравнение происходит через компаратор и сам класс при создании имеет свои особенности от C++. Для работы самого … Continue reading

Задача жестянщика

Задание: Из круга радиуса [latex]r[/latex] вырезан прямоугольник, большая сторона которого равна [latex]a[/latex]. Найти максимальный радиус круга, который можно вырезать из полученного прямоугольника.   Тесты: [latex]a[/latex] [latex]R[/latex] [latex]r[/latex] 4 2 3.8729835 2 [latex]2 \sqrt{2}[/latex] 1.4142135 5 5 4.3301272

 

BitSegmentedArray

Мне предоставили реализовать класс, который наследует SegmentedArray и характеризуется следующим: принимает большой массив элементы массива — 0 и 1 частые запросы get() и set() Чтобы была возможность хранить очень большой массив, я решила построить класс с помощью битовых операций. Это было возможно, так как элемент моего массива — это 0 и 1, и любое число … Continue reading

Java Collections Framework: Map. Частотный словарь.

Задача 1: Получив на входе корпус языка (огромный набор атрибутированных текстов на каком-нибудь языке) построить частотный словарь. Знаки препинания, скобки, кавычки и числа должны быть удалены. Слова, содержащие в себе не буквенные символы, игнорируются целиком. Задача 2: При автоматическом переводе необходимо из нескольких слов выбрать наиболее употребительное. Необходимо построить эффективную реализацию функции, которая для данного … Continue reading