0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 28
1

Бинарный поиск в массиве

03.12.2020, 21:50. Показов 321. Ответов 3

Бинарный поиск работает через раз. Не могу найти ошибку.
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
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <conio.h>
using namespace std;
 
int Search_Binary(int arr[], int left, int right, int key)
{
    int midd = 0;
    while (1)
    {
        midd = (left + right) / 2;
 
        if (key < arr[midd])      
            right = midd - 1;      
        else if (key > arr[midd])  
            left = midd + 1;       
        else                       
            return midd;           
 
        if (left > right)          
            return -1;
    }
}
 
 
int _tmain(int argc, _TCHAR* argv[]) {
  int n;
  int* arr;
  int index = 0;
  cout << "Enter the dimension of the array" << endl;
  cin >> n;
  arr = new int[n];
  int key;
  cout << "Input array" << endl;
  for (int i = 0; i < n; i++) 
  {
    cout << "a" << "["<< i << "]->";
    cin >> arr[i];
  }
  cout << "Start array" << endl;
  for (int i = 0; i < n; i++)
  {
      cout << arr[i] << " ";
  }
  cout << endl << "Input x=>";
  cin >> key;
  index = Search_Binary(arr, 0, n, key);
  if (index >= 0)
      cout << "a" << "[" << index << "]="<<key;
  else
      cout << "Not elements";
  _getch();
  return 0;
}
Миниатюры
Бинарный поиск в массиве   Бинарный поиск в массиве   Бинарный поиск в массиве  

Бинарный поиск в массиве  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2020, 21:50
Ответы с готовыми решениями:

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

Бинарный Поиск в Массиве С++
Реализовать бинарный поиск в массиве. Для сортировки массива использовать пузырьковый метод...

Бинарный поиск в массиве
Нужно написать программу для курсовой по теме : Разработка Windows приложения для бинарного поиска...

Бинарный поиск в массиве
Здравствуйте! Подскажите пожалуйста, как написать программу бинарного поиска в массиве? Вот...

3
318 / 215 / 114
Регистрация: 14.05.2020
Сообщений: 890
03.12.2020, 22:17 2
Saint Leha, массив должен быть отсортирован
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
#include <iostream>
#include <vector>
using namespace std;
 
int bin(vector<int>&arr, int n, int key)
{
    int l = 0, r = n - 1, mid;
    while(l <= r)
    {
        mid = (l + r) / 2;
        if(arr[mid] == key) return mid;
        else if(arr[mid] < key) l = mid + 1;
        else if(arr[mid] > key) r = mid - 1;
    }
    return -1;
}
 
int main(void)
{
    int n; cin >> n;
    vector<int>arr(n);
    for(size_t i = 0; i < n; ++i) arr[i] = i + 1;
    
    cout << bin(arr, n, 8) << endl;
    
  
    cin.get();
    return EXIT_SUCCESS;
}
2
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 28
06.12.2020, 13:13  [ТС] 3
@VLaDoS_2001a
Ошибка где cout << bin(arr, n, 8) << endl;
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
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <conio.h>
#include <vector>
using namespace std;
 
int bin(vector<int>&arr, int n, int key)
{
    int l = 0, r = n - 1, mid;
    while (l <= r)
    {
        mid = (l + r) / 2;
        if (arr[mid] == key) return mid;
        else if (arr[mid] < key) l = mid + 1;
        else if (arr[mid] > key) r = mid - 1;
    }
    return -1;
}
 
 
int _tmain(int argc, _TCHAR* argv[]) {
  int n;
  int* arr;
  int index = 0;
  cout << "Enter the dimension of the array" << endl;
  cin >> n;
  arr = new int[n];
  int key;
  cout << "Input array" << endl;
  for (int i = 0; i < n; i++) 
  {
    cout << "a" << "["<< i << "]->";
    cin >> arr[i];
  }
  cout << "Start array" << endl;
  for (int i = 0; i < n; i++)
  {
      cout << arr[i] << " ";
  }
  cout << endl << "Input x=>";
  cin >> key;
  int n; cin >> n;
  vector<int>arr(n);
  for (size_t i = 0; i < n; ++i) arr[i] = i + 1;
  cout << bin(arr, n, 8) << endl;
  cin.get();
  return EXIT_SUCCESS;
  if (index >= 0)
      cout << "a" << "[" << index << "]="<<key;
  else
      cout << "Not elements";
  _getch();
  return 0;
}
Миниатюры
Бинарный поиск в массиве  
0
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
06.12.2020, 13:33 4
Saint Leha, массив должен быть отсортирован. На свой алгоритм внимательно посмотрите. Если искомый элемент меньше того, что в середине, тогда ищем его в левой части, иначе в правой. Если как на 1м скрине, единица в правой части, а мы её ищем слева, то какой вывод будет?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2020, 13:33
Помогаю со студенческими работами здесь

Бинарный поиск в массиве
Помогите нужна программа по поиску числа в массиве (бинарным методом). Очень очень нужно:(

Бинарный поиск в массиве с++
Помогите, пожалуйста с задачей: Создать массив из 20-ти елементов, инициализировать массив. 1)...

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

Бинарный поиск в упорядоченном массиве
Задали реализовать бинарный поиск в упорядоченном массиве.Уже пол дня творю,3 листа исписал и...

Бинарный поиск числа в массиве
Дан упорядоченный массив чисел от 0 до 100. Необходимо выполнить бинарный поиск числа 25. Как его...

Бинарный поиск числа в массиве
Здравствуйте имеется программка в которую через клаву вводишь определенное кол-во чисел(кол-во...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru