2039-数据结构上机实验之二分查找

来源:互联网 发布:淘宝运营岗位要求 编辑:程序博客网 时间:2024/05/16 05:20
#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);    }}