#include <bits/stdc++.h>
using namespace std;
int res[1001000];
int n;
/*二分查找:每次将key值与当前区间的下标mid比较
如果key > res[mid] 则在后区间继续查找
反之则在前区间查找
*/
/*非递归*/
/*int QuickSort(int k);
int main()
{
ios::sync_with_stdio(false);
int m;
while(cin >> n >> m)
{
for(int i = 0; i < n; i++)
{
cin >> res[i];
}
while(m--)
{
int key;
cin >> key;
key = QuickSort(key);
cout << key << endl;
}
}
return 0;
}
int QuickSort(int k)
{
int left = 0;
int right = n-1;
while(left <= right)
{
int mid = (left + right)/2;
if(k == res[mid])
{
return mid;
}
else if(k < res[mid])
{
right = mid-1;
}
else
{
left = mid+1;
}
}
return -1;
}
*/
/*递归实现*/
int QuickSort(int k, int right, int left);
int main()
{
ios::sync_with_stdio(false);
while(cin >> n)
{
for(int i = 0; i < n; i++)
{
cin >> res[i];
}
int key;
cin >> key;
key = QuickSort(key, 0, n-1);
if(key != -1)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
return 0;
}
int QuickSort(int k, int right, int left)
{
if(right > left)
{
return -1;
}
int mid = (right + left)/2;
if(k == res[mid])
{
return mid;
}
else if(k < res[mid])
{
return QuickSort(k, right, mid-1);
}
else
{
return QuickSort(k, mid+1, left);
}
}
二分查找
最新推荐文章于 2023-07-26 20:48:31 发布