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

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

Войти
Регистрация
Восстановить пароль
 
Parradox
Сообщений: n/a
#1

Дан массив упорядоченных по возрастанию целых чисел. разработать алгоритм бинарного поиска заданного числа, результат номер искомого числа или 0 если - C++

10.01.2013, 11:32. Просмотров 851. Ответов 1
Метки нет (Все метки)

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

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int x=0;
int a[]= {1,3,6,22,25,27,31,32,33,37,38,40};
int n=13;
size_t first = 0; /* Номер первого элемента в массиве */
size_t last = n; /* Номер элемента в массиве, СЛЕДУЮЩЕГО ЗА последним */
/* Если просматриваемый участок непустой, first<last */
size_t mid;
 
if (n == 0)
{
/* массив пуст */
}
else if (a[0] > x)
{
/* не найдено; если вам надо вставить его со сдвигом - то в позицию 0 */
}
else if (a[n - 1] < x)
{
/* не найдено; если вам надо вставить его со сдвигом - то в позицию n */
}
 
while (first < last)
{
/* ВНИМАНИЕ! В отличие от более простого (first+last)/2, этот код стоек к переполнениям.
Если first и last знаковые, возможен код (unsigned)(first+last) » 1. */
mid = first + (last - first) / 2;
 
if (x <= a[mid])
{
last = mid;
}
else
{
first = mid + 1;
}
}
 
/* Если условный оператор if(n==0) и т.д. в начале опущен - значит, тут раскомментировать! */
if (/* last<n &&*/ a[last] == x)
{
/* Искомый элемент найден. last - искомый индекс */
} else
{
 
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 11:32     Дан массив упорядоченных по возрастанию целых чисел. разработать алгоритм бинарного поиска заданного числа, результат номер искомого числа или 0 если
Посмотрите здесь:
Упорядочить массив целых положительных чисел по возрастанию, определить номер минимального простого числа C++
Упорядочить массив целых положительных чисел по возрастанию, определить номер минимального простого числа до и после упорядочивания массива C++
Составить алгоритм и программу длля поиска в массиве целых чисел из 5 элементов минимального числа. C++
C++ Дан массив, упорядоченный по убыванию. Найти номер первого элемента, меньшего заданного числа a
C++ дан массив. Если ввести 2 целых числа, то массив в диапазоне между этими числами приобретет максимальное значение массива
Дан массив В[0:n-1] целых чисел и числа x и y , где x<y. на основе элементов массива В сформировать массив D[0:m-1] C++
C++ Дан массив целых чисел с 0 ,вывести на экран все числа кроме 0
C++ Найти первое вхождение заданного целого числа в массив целых чисел
C++ 11.196. Дан массив целых чисел. Найти номер первого элемента, кратного числу 13. Если таких элементов в массиве нет, то должно быть напечатано соответ
Дан массив из n целых чисел. До и после каждого числа, кратного 7, вставить число, равное 5 C++
Дан массив из n целых чисел. До и после каждого числа, кратного 7, вставить число, равное 5 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
10.01.2013, 11:41     Дан массив упорядоченных по возрастанию целых чисел. разработать алгоритм бинарного поиска заданного числа, результат номер искомого числа или 0 если #2
Бинарный поиск в массиве
Бинарный поиск в массиве с++
в поиск вбейте, много таких тем)
Ответ Создать тему
Опции темы

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