Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 14.10.2019
Сообщений: 28
1

Программа с бинарным поиском чутка исправленная

04.11.2019, 23:56. Показов 672. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй всем ночи. Во время написания программы столкнулся с некоторым непониманием. Программа должна делать следующее: создаётся динамический массив, потом он сортируется ( я сделал пузырьком), происходит бинарный поиск нужного элемента ( он задаётся пользователем в начале, также как и размер массива) и вот потом нужно вывести диапазон нужных индексов ( индексов этих элементов). С последним не понимаю как делать. Код будет внизу.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <time.h>
#include <malloc.h>
#include <stdlib.h>
 
 
 
 
int main()
 
{
srand(time(NULL));
int N;
 
printf("Input array size\n");
scanf("%d", &N);
 
 
int X, i, high, low;
int *mass;
 
mass=(int*)malloc((2*N)*sizeof (int));
 
printf ( "input X\n");
scanf ("%d", & X);
 
for (i=0;i<2*N;i++)
{
mass[i] = rand()%(2*X);
}
 
printf("mass:\n");
 
for (i=0;i<2*N;i++)
{
printf("%d ", mass[i]);
}
printf("\n");
 
// bubble sort
int a,b;
char t;
 
 
for (a=1;a<2*N;++a)
for (b=2*N-1;b>=a;--b)
{
if (mass[b-1]>mass[b])
{
t=mass[b-1];
mass[b-1]=mass[b];
mass[b]=t;
}
 
}
 
 
printf("sorted mass:\n");
 
for (i=0;i<2*N;i++)
{
printf("%d ", mass[i]);
}
 
 
 
int low=0;
int high=2*N-1;
int middle;
 
 
while (low<=high)
{
middle=(low+high)/2;
if(mass[middle]==X)
{
 
i= middle;
break;
}
else if(mass[middle]<X)
{
low=middle+1;
}
else if (mass[middle]>X)
{
high= middle-1;
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2019, 23:56
Ответы с готовыми решениями:

Нарезка колбасы бинарным поиском
Поварёнок Вася работает первый день. В его трудовые функции входит нарезка колбасы на кусочки...

Поиздеавться над бинарным поиском
Вот у меня задание, написать алгоритм бинарного поиска числа в отсортированном по возрастанию...

Как можно решить бинарным поиском
Как можно найти бинарным поиском такой X что функция sum( Pi * |Xi - X|) (функция сумм от этих...

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

3
0 / 0 / 0
Регистрация: 14.10.2019
Сообщений: 28
05.11.2019, 00:14  [ТС] 2
Доброй всем ночи. Во время написания программы столкнулся с некоторым непониманием. Программа должна делать следующее: создаётся динамический массив, потом он сортируется ( я сделал пузырьком), происходит бинарный поиск нужного элемента X ( он задаётся пользователем в начале, также как и размер массива) и вот потом нужно вывести диапазон нужных индексов ( индексов этих элементов). С последним не понимаю как делать. Код будет внизу. Массив задаётся рандомно, размер элементов массива не более чем 2*X.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <time.h>
#include <malloc.h>
#include <stdlib.h>
 
 
 
 
int main()
 
{
srand(time(NULL));
int N;
 
printf("Input array size\n");
scanf("%d", &N);
 
 
int X, i, high, low,middle;
int *mass;
 
mass=(int*)malloc((2*N)*sizeof (int));
 
printf ( "input X\n");
scanf ("%d", & X);
 
for (i=0;i<2*N;i++)
{
mass[i] = rand()%(2*X);
}
 
printf("mass:\n");
 
for (i=0;i<2*N;i++)
{
printf("%d ", mass[i]);
}
printf("\n");
 
// bubble sort
int a,b;
char t;
 
 
for (a=1;a<2*N;++a)
for (b=2*N-1;b>=a;--b)
{
if (mass[b-1]>mass[b])
{
t=mass[b-1];
mass[b-1]=mass[b];
mass[b]=t;
}
 
}
 
 
printf("sorted mass:\n");
 
for (i=0;i<2*N;i++)
{
printf("%d ", mass[i]);
}
 
 
 
 low=0;
 high=2*N-1;
 middle;
 
 
while (low<=high)
{
middle=(low+high)/2;
if(mass[middle]==X)
{
 
i= middle;
break;
}
else if(mass[middle]<X)
{
low=middle+1;
}
else if (mass[middle]>X)
{
high= middle-1;
}
}
return 0;
}


а ещё как это отсылать картинкой, чтобы было красиво?
0
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
05.11.2019, 00:32 3
Максим Сачков, возвращает индекс найденного числа или -1 в случае отсутствия
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int
binsearch (int n, int * arr, size_t size)
{
  int low = 0;
  int high = size - 1;
  int mid = 0;
 
  while (low < high) {
    mid = (low + high) / 2;
 
    if (n < arr[mid]) {
      high  = mid - 1;
    }
    else if (n > arr[mid]) {
      low = mid + 1;
    }
    else {
      return mid;
    }
  }
  return -1;
}
0
easybudda
05.11.2019, 01:24     Программа с бинарным поиском чутка исправленная
  #4
 Комментарий модератора 
Не дублируйте темы - это нарушает правила форума.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2019, 01:24

Найти корень числа бинарным поиском
Нужно написать код нахождения корня числа, используя бинарный поиск.

Решение уравнения окружности бинарным поиском
Здравствуйте. Как известно, уравнение окружности (X - Xc)^2 + (Y - Yc)^2 = R^2 Есть массив...

Бинарным поиском найти максимальное a такое, что a^2 +3*a+2
Задание-2 Дано целое положительное n от 1 до 10^9. Бинарным поиском найти максимальное a такое,...

Бинарным поиском найти минимальный неотрицательный элемент в массиве
Ребят, помогите, пожалуйста, написать функцию, которая будет бинарным поиском искать минимальный...


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

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