Как мне ... написать программу для бинарного поиска
Разработайте программу для реализации алгоритма бинарного поиска. Этот метод сравнивает значение ключа поиска элемента, который находится на полпути в отсортированном списке. Затем ;
а) если они совпадают, поиск окончен.
(Б) если значение ключа поиска меньше среднего значения, то первая половина списка содержит значение ключа.
(в) если значение ключа поиска больше среднего значения, то вторая половина содержит значение ключа.
Повторяйте эту стратегию "разделяй и властвуй", пока у нас не будет совпадения. Если список сокращен до одного несоответствующего элемента, то список не содержит значения ключа.
ТЕСТ 1
ВХОД
10 11 12 13 1 3 2 4 7 8 110 122 123
2
ВЫХОД
Элемент находится в списке, и его позиция равна=7
Что я уже пробовал:
#include <stdio.h> main() { int top,bottom,middle,value[50],key,n,i; clrscr(); printf("Enter the number of elements in array:"); scanf("%d",&n); printf("Enter the elements of array in ascending order\n"); for(i=1;i<=n;i++) scanf("%d",&value[i]); printf("Enter the value which you want to search:"); scanf("%d",&key); top=n-1; bottom=0; do { middle=(top+bottom)/2; if(value[middle]<key) bottom=middle+1; else top=middle; } while(top>bottom); if(top==-1) printf("List is empty!"); else if(value[top]==key) printf("value has been found!"); else printf("Target value has not been found!"); getch(); return 0; }
OriginalGriff
И что же?
Что он делает такого, чего вы не ожидали, или не делает того, что вы сделали?
Какая помощь вам нужна?
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.
jeron1
ВХОД
10 11 12 13 1 3 2 4 7 8 110 122 123
2
ВЫХОД
Элемент находится в списке, и его позиция равна=7
таким образом, элементы не вводятся по возрастанию
приказ?
Richard MacCutchan
Сначала вам нужно отсортировать входные элементы, чтобы выполнить правильный двоичный поиск.