求代码,C++折半查找的
使用折半查找任意个数字,程序首先输入两个整数n,k,表示被查找的数字的数量和需要查找的数字的数量,然后输入待查找的n个数字,输入k个需要查找的数字,返回下标,没有找到则返...
使用折半查找任意个数字,程序首先输入两个整数n,k,表示被查找的数字的数量和需要查找的数字的数量,然后输入待查找的n个数字,输入k个需要查找的数字,返回下标,没有找到则返回0。
样例输入
5 2
1 4 6 7 8
5 8
样例输入
0 5
备注:请把数组开得大一些,否则会超时,待查找的数组是个有序数组
求代码!求代码!求代码! 展开
样例输入
5 2
1 4 6 7 8
5 8
样例输入
0 5
备注:请把数组开得大一些,否则会超时,待查找的数组是个有序数组
求代码!求代码!求代码! 展开
1个回答
展开全部
#include <iostream>
using namespace std;
int getPos(int a[], int x)
{
int left = 1, right = a[0];
int mid;
while( left <= right )
{
mid = (left+right)/2;
if( a[mid] > x ){
right = mid-1;
}else if( a[mid] < x ){
left = mid+1;
}else{
return mid;
}
}
return 0;
}
int main( )
{
int n, k;
while( cin >> n >> k )
{
int *a = new int[n+1];
int i, x;
for(i = 1; i <= n; ++i)
cin >> a[i];
a[0] = n;
while( k-- ){
cin >> x;
int index = getPos(a, x);
cout << index << " ";
}
cout << endl;
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询