|
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
|
|
Бинарный поиск без предварительной сортировки16.03.2018, 14:25. Показов 7190. Ответов 45
Метки нет (Все метки)
Всем привет! Мне надо организовать двоичный поиск в массиве, но он не отсортирован по возрастанию или убыванию.
Вопрос: Как, если это возможно, найти элемент в таком массиве, методом бинарного дерева.
0
|
|
| 16.03.2018, 14:25 | |
|
Ответы с готовыми решениями:
45
Бинарный поиск с любым видом сортировки
Можно ли загрузить модели, текстуры и прочий контент без предварительной их компиляции с помощью ContentPipeline |
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 16.03.2018, 16:11 | |
|
pavel2210057, через дерево не придется. Оно уже хранится в памяти сортированным. Новое значение в дерево добавляется практически моментально.
0
|
|
|
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
|
|
| 16.03.2018, 16:13 [ТС] | |
|
QuakerRUS, я о таком просто еще не слышал, можете показать на простом примере, пожалуйста.
Добавлено через 1 минуту Вы меня заинтересовали
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||||||
| 16.03.2018, 16:26 | ||||||
|
pavel2210057, вот с этим у меня сложности. У меня есть старенькая программа, которую я писал с примера в древней книге под древний компилятор. А вот на VS2017 она у меня не компилируется с моими правками, возможно что то в стандарте отличается. Что именно, я пока понять не могу. Но для наглядного примера возможно подойдет. Неизмененный код:
pavel2210057, как вариант, можете поискать в сети готовые решения или воспользоваться какой-нибудь библиотекой, которая работает с деревьями.
1
|
||||||
|
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
|
|
| 16.03.2018, 16:32 [ТС] | |
|
QuakerRUS, спасибо, позже почитаю ваш код и пошарюсь в инете на эту тему, спасибо вам
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||
| 16.03.2018, 16:34 | ||
|
Что касается дерева, то его же балансировать надо при вставке-удалении, если заранее распределение значений элементов неизвестно, иначе перекос на одну ветвь будет и время поиска станет линейным.
0
|
||
|
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
|
|
| 16.03.2018, 16:37 [ТС] | |
|
woldemas, какой способ лучший по-вашему?
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|
| 16.03.2018, 16:42 | |
|
pavel2210057, а я не понял, что вам надо.
Быстро искать элемент и в тоже время важен порядок следования элементов в исходном массиве?
0
|
|
|
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
|
|
| 16.03.2018, 16:43 [ТС] | |
|
woldemas, верно
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||
| 16.03.2018, 16:48 | ||
|
woldemas, даже если через insert вставить, нужно сдвинуть миллион значений. У меня заняло примерно секунду процессорного времени, а это тоже немало.
0
|
||
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|||
| 16.03.2018, 16:53 | |||
|
pavel2210057, мне кажется надо задачу пересмотреть.
Но в такой постановке, я бы хранил два массива и при добавлении вставлял в отсортированный на нужное место через бинарный поиск, и дописывал в конец не отсортированного. Добавлено через 2 минуты
0
|
|||
|
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
|
||
| 16.03.2018, 17:03 | ||
|
Вообще я совсем не понимаю что нужно автору. Если тупо найти элемент в массиве, то быстрее конечно же линейный поиск чем сортировка + бинарный поиск(это очевидно). Если надо быстро вставлять новые элементы и чтоб они шли по порядку тогда бинарное дерево поиска. Но чтоб дерево работало быстро, оно должно быть сбалансированным. Можно свое закодить(КЧ-дерево, АВЛ-дерево), а можно воспользоваться готовым из стандартной библиотеки std::set / std::multiset / std::map в зависимости от задачи.
0
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||
| 16.03.2018, 17:07 | ||
|
А так согласен, данных мало, непонятно, что автору именно надо, так как он спрашивает теоретические вопросы, а практическую задачу не озвучивает. Сколько будет добавлений данных в секунду? Сколько будет поисков в секунду? Надо и плясать уже от этого, какой вариант выбирать.
0
|
||
|
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
|
||
| 16.03.2018, 17:21 | ||
|
Добавлено через 3 минуты Если мы только один раз добавим кучу элементов, а потом будут запросы только на поиск, то отсортировать в принципе хороший вариант. Короче надо все-таки чтоб ТС нормально объяснил что ему надо.
0
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 16.03.2018, 17:25 | |
|
Новичок, я лишь указал на то, что одна сортировка+много бинарных поисков будут работать быстрее, чем много линейных поисков. А так я за дерево бинарное топлю.
Но если данные будут поступать упорядоченно, дерево будет не такое эффективное, как хотелось бы. Но думаю не менее эффективным чем линейный поиск все же.
0
|
|
|
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
|
|||
| 16.03.2018, 17:35 | |||
|
Добавлено через 55 секунд
0
|
|||
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||
| 16.03.2018, 17:39 | ||
|
0
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 16.03.2018, 17:42 | |
|
Новичок, да, мы выше уже это обсуждали. И тут опять-таки зависит от постановки задачи. Если данные постоянно будут поступать упорядоченно, придется дерево постоянно балансировать. Правда это очень теоретический случай, поэтому я и предлагал дерево.
0
|
|
|
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
|
|
| 16.03.2018, 17:47 | |
|
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 16.03.2018, 17:51 | |
|
Новичок, сделать то сделает, но сколько он ресурсов будет на это тратить?
0
|
|
|
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
|
|
| 16.03.2018, 17:52 | |
|
Всегда интересовал этот вопрос. Что если использовать std::vector для сохранения структуры, std::set для поиска и std::shared_ptr?
0
|
|
| 16.03.2018, 17:52 | |
|
Поиск заданного элемента в упорядоченном массиве(бинарный поиск) Поиск первого положительного элемента массива (бинарный поиск)
Поиск перебором или бинарный поиск в StringGrid Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|