利用一维数组存放键盘输入 10个有序(升序或降序)整数,用二分查找方法在该组数据中查找到某关键字的K值(该值从键盘输入)。若查找到输出次此数K在数组的位置;否则输出“未查到次数”
用所学的高级程序设计语言完成下列二分查找算法验证。
#include <iostream>
using namespace std;
int main(void)
{
int a[10], i, n, flag = 0;
cout << "输入10个整数:" << endl;
for (i = 0; i < 10; i++)
cin >> a[i];
cout << "输入要查找的数:";
cin >> n;
for (i = 0; i < 10; i++)
if (a[i] == n)
{
cout << "该数在数组中的下标是:" << i << endl;
flag = 1;
break;
}
if (!flag)
cout << "无此数" << endl;
return 0;
}
#include <iostream>
using namespace std;
//二分法查找(要求数组以升序排列)
int binSearch(int x, int a[], int n)
{
int low, high, mid;
low = 0;
high = n-1;
while(low <= high)
{
mid = (low + high) / 2;
if(x < a[mid])
high = mid - 1;
else if(x > a[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
int main()
{
int i,k,pos;
int a[10];
cout << "请输入要查找的数:";
cin >> k;
cout << "请输入10个整数:";
for(i=0;i<10;i++)
cin >> a[i];
pos = binSearch(k,a,10);
if(pos < 0)
cout << "未找到此数";
else
cout << pos;
return 0;
}