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

Двоичный поиск в массиве ВСЕХ вхождений искомого элемента

24.04.2016, 13:29. Показов 1590. Ответов 2

Студворк — интернет-сервис помощи студентам
У Вики есть такой чудесный код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def check(x, m):
    return x < m
 
 
def binSearch(lst, x):  # lower_bound
    l = 0
    r = len(lst)
    while r - l > 1:
        m = l + (r - l) // 2
        if check(x, lst[m]):
            r = m
        else:
            l = m
    return lst[l]
В случае если такой элемент есть, функция просто возвращает его значение, нет - возвращает другое значение. Но у меня есть необходимость доработать его. Во первых чтобы он возвращал индексы всех элементов массива, равных искомому значению. Помогите, пожалуйста, у меня возникают проблемы с дороботкой.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2016, 13:29
Ответы с готовыми решениями:

Реализуйте двоичный поиск элемента X в массиве A
Дан массив A размера N и значение X. Реализуйте двоичный поиск элемента X в массиве A, предварительно отсортировав массив методом выбора...

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

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

2
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
24.04.2016, 14:17
Так как массив отсортирован, то все одинаковые элементы будут рядом.
Нам нужно вернуть начальный и конечный индексы подмассива, содержащего элементы с заданным значением.

Двоичным поиском находим любой из элементов. Получаем подмассив из одного элемента (начальный и конечный индексы равны индексу найденного элемента).
Расширяем этот подмассив вверх: пока существует следующий (за конечным) элемент и он равен искомому, его индекс будет конечным индексом.
Аналогично расширяем вниз.
1
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
29.04.2016, 20:05
Только это O(n) в худшем случае. Можно найти левый элемент и правый элементы двоичным поиском с округлением при делении в разные стороны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2016, 20:05
Помогаю со студенческими работами здесь

Реализуйте двоичный поиск элемента X в массиве A, предварительно отсортировав массив методом пузырька
Дан массив A размера N и значение X. Реализуйте двоичный поиск элемента X в массиве A, предварительно отсортировав массив методом...

Поиск максимального элемента в массиве и определение вхождений этого элеманета в массив
Здравствуйте, нужна помощь в написании программы, вот текст задания:Написать программу, выполняющую поиск максимального элемента в массиве...

Написать метод, возвращающий индекс искомого элемента в массиве
Принимает массив интов, и значение типа инт, возвращает индекс массива в котором значение совпадает с передаваемым, начиная с начала...

Поиск элемента массива и отображение нескольких после искомого
Здравствуйте! Есть у меня такой код $url = $_SERVER; $text = basename ($url); $link = file_get_contents('content.txt'); ...

Элементы, которые присутствуют в массиве А, но отсутствуют в массиве В (сортировка - выбором, поиск - двоичный)
элементы, которые присутствуют в массиве А, но отсутствуют в массиве В алгоритм сортировки:Выбором Алгоритм поиска: двоичный Сделать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru