Результат программы
n=6
1 2 3 4 5 6
введите элемент, который вы ищете =6
искомый элемент находится на 6 месте, и он был найден в 3 сравнениях
Предположим, что задан массив чисел, упорядоченных по возрастанию. Основная идея этого метода заключается в том, что случайным образом берется какой-то элемент Am, и он сравнивается с аргументом поиска X. Если Am = X, то поиск будет завершен; если Am X, то все элементы с индексами больше M будут исключены из будущего поиска. Предлагаемый алгоритм корректно работает даже при произвольном выборе M. По этой причине M следует выбирать таким образом, чтобы исследуемый алгоритм давал более эффективный результат, то есть давайте выберем его таким образом, чтобы количество элементов, участвующих в будущих процессах, было как можно меньше. Решение будет идеальным, если мы выберем средний элемент, то есть середину массива. Для примера рассмотрим программу поиска элемента, соответствующего ключевому слову, методом двоичного поиска из массива, состоящего из целых чисел, отсортированных по возрастанию.
Программный код
#include
using namespace std;
int main(){
int n;cout<<"n=";cin>>n;
int k[n];
for(int i=0;i>k[i];
int key, search;
cout<<"qidirilayotgan elementni kiriting=";cin>>key;
int low = 0;
int hi = n-1; int j=0;
while (low <= hi){
int mid = (low + hi) / 2;j++;
if (key == k[mid]){
search = mid;
cout<<"qidirilayotgan element "<
"<
system("pause");
exit(0);
}
if (key < k[mid])
hi = mid - 1;
else low = mid + 1;
}
search=-1;
cout<
topilmadi\n";
system("pause");
}
Do'stlaringiz bilan baham: |