1.java.util.Vector
2.java.util.ArrayList
3.java.util.LinkedList
4.java.util.TreeSet
5.java.util.HashSet
6.сортированный java.util.Vector
7.сортированный java.util.ArrayList
8.сортированный java.util.LinkedList
Как это понимать "за O(log(n))"? что это вообще такое, секунды или световые годы выраженные в какой то формуле?
Java
Какие из следующих стандартных контейнеров позволяют найти в них элемент по его значению за O(log(n))?
Начал писать в комментарии к Алику, думаю, лучше вынесу сюда.
Чтобы найти сложность алгоритма, есть два пути: если ты математик - рассчитай количество операций в алгоритме при объеме входных данных n и найди самый большой член в формуле; а если просто программист, тем более студент - придется заучивать по таблице.
Примеры на практике разных O:
- сложность поиска в массиве (array) по индексу - O(1): какой бы ни был размер массива, а элементы в нем находятся за одну операцию.
- сложность поиска в массиве или списке (list) по значению - O(n): чем больше элементов в массиве, тем дольше придется искать, причем строго пропорционально количеству элементов.
- сложность поиска элемента в дереве - O(log(n)): например, если все элементы разложены по взвешенному двоичному дереву, то придется пройти только по одной ветке, а в ней - логарифм числа элементов по основанию 2.
- сложность сортировки "пузырьком" - O(n^2).
Вот табличка по Java:
github. com/benblack86/java-snippets/blob/master/resources/java_collections.pdf
А вот, например, универсальная (но в Java некоторые коллекции не так называются):
bigocheatsheet. com/
Чтобы найти сложность алгоритма, есть два пути: если ты математик - рассчитай количество операций в алгоритме при объеме входных данных n и найди самый большой член в формуле; а если просто программист, тем более студент - придется заучивать по таблице.
Примеры на практике разных O:
- сложность поиска в массиве (array) по индексу - O(1): какой бы ни был размер массива, а элементы в нем находятся за одну операцию.
- сложность поиска в массиве или списке (list) по значению - O(n): чем больше элементов в массиве, тем дольше придется искать, причем строго пропорционально количеству элементов.
- сложность поиска элемента в дереве - O(log(n)): например, если все элементы разложены по взвешенному двоичному дереву, то придется пройти только по одной ветке, а в ней - логарифм числа элементов по основанию 2.
- сложность сортировки "пузырьком" - O(n^2).
Вот табличка по Java:
github. com/benblack86/java-snippets/blob/master/resources/java_collections.pdf
А вот, например, универсальная (но в Java некоторые коллекции не так называются):
bigocheatsheet. com/
Константин Курылёв
Спасибо, видимо наш руководитель что то напутал, дав нам этот тест, зачем мне это нужно знать, не понимаю, так просто, для статистики что ли..., по мне так без разницы на сложность алгоритма, главное скорость и производительность, так это я и так знаю, где и какой способ применить. Еще раз спасибо за развернутый ответ, вопрос закрыт.
Что непонятного? Поиск нужного за О*логарифм от размерности массива. Где - О - константа. Просто есть алгоритмы, ищущие за О * размерность массива!
Константин Курылёв
Ничего не понятно, похоже мне еще рано решать такие задачи.
Alisher Abylgaziev
*рукалицо*
Какая еще константа? Нафиг давать такие ответы?
Какая еще константа? Нафиг давать такие ответы?
Это -- асимптотическая оценка сложности алгоритма, зависимость времени работы алгоритма от количества элементов n, которые он обрабатывает.
Константин Курылёв
И как это вычислять, почему бы не указать просто в секундах, обязательно надо какую то математическую приблуду вставить в задачу, чтобы мозг взорвался.
Похожие вопросы
- Ребят почему оба элемента массива принимают одинаковое значение? JAVA
- Работа со строками Java Разработать программу, которая вводит строку и находит все слова указанной длины n (n вводится).
- Как сделать так,что бы минимальный элемент каждой строки оказался в начале? Что неправильно сделала
- Задача. Есть несколько множеств множеств с числом элементов от 1 до 3 - пересечения возможны. Далее внутри...
- Как создать цикл, который будет считать количество минимальных значений массива на джава
- Поиск определенного элемента в скриншоте.
- Отличается сумма Почему отличается сумма ряда 1/n^2 при n от 1 до 1000000 и от 1000000 до 1?
- Как сравнить элементы массива с другой переменной?
- Как назвается структура данных в программировании (C#), где доступ к каждому элементу осуществляется по имени?
- Составь программу в зависимости величины даны чисел матрица количество положительных и отрицательных элементов