#折半查找
问题描述】设计一个折半查找算法,求查找到关键字为k的记录所需关键字的比较次数。
【输入形式】
有序表的长度
有序的关键字序列
关键字k
【输出形式】
比较的次数
【样例输入】
6
10 15 18 19 20 23
19
【样例输出】
3
下面展示一些 内联代码片
。
// An highlighted block
#include<iostream>
#include<string>
using namespace std;
void output(int arr[],int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void zheban(int arr[], int len,int find)
{
int low = 0;
int high = len - 1;
int mid;
int count = 0;
while (low <= high)
{
mid = (low + high) / 2;
if (find < arr[mid])
high = mid - 1;
else if (find > arr[mid])
low = mid + 1;
else
{
count++;
break;
}
count++;
}
cout << count << endl;
}
int main()
{
int length;
cin >> length;
int *arr=new int[length];
for (int i = 0; i < length; i++)
{
int num;
cin >> num;
}
int find;
cin >> find;
zheban(arr, length, find);
return 0;
}