Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 11
1

2 задачки для разминки мозга

16.03.2015, 23:00. Показов 1323. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача 1) Массив состоит из 2 отсортированных массивов, приписанных друг за другом. Все элементы массива различны, его размер-n. Как найти заданный элемент в массиве за O(logn)?
Пример массива: 1 2 4 6 7 3 9 11 12 14 16 17 20 21
Задача 2) Описать саморасширяющийся массив, время добавления/удаления всегда O(logn)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2015, 23:00
Ответы с готовыми решениями:

разминка для мозга
на askdev.ru есть конкурс - игра в города(http://www.askdev.ru/question/1969/) есть массив городов,...

Кто понимает теорию графов? Для вас может эта задача разминка для мозга
Не понимаю как понять это.. Удалил вложение

Решение для разминки
1.Дан массив чисел размерностью 10 элементов. Написать функцию, которая сортирует массив по...

Задачка для разминки :)
Как видно из рисунка, есть три квадрата. Доказать, что: \alpha + \beta + \gamma = 90^{\circ} ...

14
Заблокирован
17.03.2015, 16:09 2
Цитата Сообщение от Skyper Посмотреть сообщение
Задача 1) Массив состоит из 2 отсортированных массивов, приписанных друг за другом. Все элементы массива различны, его размер-n. Как найти заданный элемент в массиве за O(logn)?
Бинарный поиск должен найти за O(long)
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
18.03.2015, 10:15 3
1) Вы уверены, что это можно сделать?
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
18.03.2015, 14:16 4
Цитата Сообщение от Skyper Посмотреть сообщение
2) Описать саморасширяющийся массив, время добавления/удаления всегда O(logn)
Декартово дерево с неявным ключом.
0
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 11
19.03.2015, 18:25  [ТС] 5
Нам не известны границы 2 изначальных массивов, только размер нового
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
19.03.2015, 20:01 6
Хочется как-то применить бинарный или тернарный поиск.
0
1 / 1 / 0
Регистрация: 25.10.2010
Сообщений: 29
23.03.2015, 18:35 7
Задача 2) Описать саморасширяющийся массив, время добавления/удаления всегда O(logn)
2-3 дерево
0
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,748
24.03.2015, 14:13 8
Цитата Сообщение от Skyper Посмотреть сообщение
Задача 1) Массив состоит из 2 отсортированных массивов, приписанных друг за другом. Все элементы массива различны, его размер-n. Как найти заданный элемент в массиве за O(logn)?
Никак, сложность поиска в таком массиве превышает O(logn). Пример
Массив 1, 7, 2, 3, 4, 5, 9 Найти 7 (ну или 6 с ответом "такого нет")
При использовании двоичного поиска мы попадаем в правый массив, когда поиск в нем закончен - число сравнений уже log. А поиск "границы" обойдется "в ту же цену". А если не делить пополам (а что-то другое) - то уже не log

Цитата Сообщение от Skyper Посмотреть сообщение
Задача 2) Описать саморасширяющийся массив, время добавления/удаления всегда O(logn)
Не знаком с термином "саморасширяющийся массив", что это?
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
24.03.2015, 14:31 9
Цитата Сообщение от Igor3D Посмотреть сообщение
Не знаком с термином "саморасширяющийся массив", что это?
некоторая СД, которая умеет эффективно отвечать на запросы "вставить элемент на i-ое место" и "вернуть i-ый элемент" / "посчитать что-то на отрезке текущего массива [l; r]".
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
24.03.2015, 22:33 10
Цитата Сообщение от Igor3D Посмотреть сообщение
Никак, сложность поиска в таком массиве превышает O(logn).
Не согласен. log на поиск границы и для каждой части бинарный поиск.
Только вот я ещё не придумал, как границу найти...

Задача 2)
Тут уже 2 варианта предложено.
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
25.03.2015, 19:38 11
1 бинпоиск
2 биндерево

Добавлено через 3 минуты
ах да,первую задачу за логн скорей всего не решить
0
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 11
26.03.2015, 13:51  [ТС] 12
Во 2 задаче, на самом деле, подходит почти любая структура-дерево.

Пояснение к 1 задаче-O(logn)-это может быть и 3*log(3, n). Я думал над поиском границы(стык элементов, которого может и не быть т.е. массив идет так: 123(стык)56789) за logn, но так и не придумал. После этого бинпоиск по каждой части. Возможно, стык искать не нужно, а думать надо хитрее
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
26.03.2015, 15:17 13
А если тернарный поиск вместо бинарного? Правда, я вообще не думал, как применить его...
То что мы ищем гарантированно есть в массиве, или не обязательно?
Других условий на массив нет, например, что он является перестановкой?
0
0 / 0 / 0
Регистрация: 04.11.2014
Сообщений: 11
26.03.2015, 17:12  [ТС] 14
Все элементы массива различны-думаю, это надо как-то учитывать.
С тернарником непонятно-этот элемент может быть "пропастью", например на массиве {1 2 5 7 9 1 10}, при индексации с 0, мы возьмем элементы на 2 и 4 позиции, т.е. 5 и 7, и пойдет троичный поиск от 0 до 4.
Массив не является перестановкой, просто все элементы различны
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,471
26.03.2015, 18:12 15
1) по-моему, не решается

Возьмём отсортированный массив и добавим в него число Х на произвольную позицию. Как теперь найти X за O(logn)?
По-моему, никак. Чтобы найти X придётся проверить все элементы массива. Тот факт, что до добавления Х массив был отсортирован, нам никак не помогает.
А получившийся новый массив можно рассматривать как два отсортированных массива из условия задачи. Х будет либо последним элементом первого отсортированного массива, ли первым элементом второго.
0
26.03.2015, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2015, 18:12
Помогаю со студенческими работами здесь

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

VPN для SCALANCE S61x, разминка для мозга
Столкнулся с вопросом поднять VPN тунель на оборудовании Logmatic (такое древобрабатывающее...

Кровоток для мозга
Действительно ли если по массировать вески то в этот момент улучшается кровоток в мозг

Задачка для мозга
Помогите решить задачку: Рассеянный кассир, оплачивая чек мистеру X, перепутал доллары и центы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru