Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Starfalll
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 32
#1

Бинарный поиск последнего нужного нам элемента - C++

20.03.2013, 12:25. Просмотров 440. Ответов 0
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
  while (first < last)
               {
                    mid = (first + last) >> 1;
                    if (a[mid] >= x)
                    {
                         last = mid;
                    }
                    else
                    {
                         first = mid + 1;
                    }
 
               }
У меня есть упорядоченная последовательность чисел с возможными повторами чисел.
Самый быстрый метод посчитать количество повторов, найти первый и последний элемент и отнять их.
То есть , имея
C++
1
0 1 1 1 2 4 5
Находим первую 1 и последнюю 1 , отнимаем и вот он результат.
Вот только с написанием поиска который ищет последний элемент возникли проблемы.
иногда работает, иногда нет
C++
1
2
3
4
5
6
7
8
9
10
11
 while (first1 < last1)
               {
                    mid1 = (first1 + last1) >> 1;
                    if (a[mid1] <= x)
                    {
                         first1 = mid1;
                    }
                    else
                    {
                         last1 = mid1-1;
                    }
Может вы заметите ошибку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 12:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бинарный поиск последнего нужного нам элемента (C++):

Поиск индекса нужного элемента - C++
Доброго времени суток. Некоторые проблемы с программой. Работает правильно - генерирует массив с заданными пользователем строками и...

Бинарный поиск элемента массива - C++
Всем привет. Помогите пожалуйста. Есть массив X из n елементов, который рандомится в диапазоне . И элемент У стого-же диапазона. ...

Бинарный поиск элемента в массиве - C++
Суть - программа ищет число по формуле K=(a+b)/2 бинарным поиском, и выводит его порядковый номер (индекс) в отсортированом массиве....

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

Односвязный список. Вывести сумму последнего элемента и первого, предпоследнего и последнего и т.д. - C++
Считываю с клавиатуры числа пока не встречаю 0. Например 1 3 7 5 8 1 0 Вывожу суму последнего элемента и первого, предпоследнего и...

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2013, 12:25
Привет! Вот еще темы с ответами:

Многомерный массив. Дублирование значения первого элемента строки в значении последнего элемента предыдущей - C++
Здравствуйте уважаемые форумчане! Решил я сегодня разобраться с многомерными массивами! И немного разочаровался в своих результатах....

Списки языка C++ Удаление нужного элемента - C++
Все не могу реализовать удаление нужного мне элемента из писка памогите написать функцию удаления введенного элемента. ...

Цикл поиска позиции нужного элемента - C++
Доброго времени суток. Есть программа, которая ищет максимальный элемент среди минимальных (max) в матрице размером n X m и диапазоном от a...

Цикл поиска позиции нужного элемента - C++
Доброго времени суток. Некоторые проблемы с программой. Работает правильно - генерирует массив с заданными пользователем строками и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru