二分查找判定元素是否存在

    xiaoxiao2026-04-10  5

    数据结构上机实验之二分查找 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO. 输入 本题多组数据,首先输入一个数字n(n>=100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。 输出 若存在输出YES,不存在输出NO. 示例输入 4 1 3 5 8 3 示例输出 YES # include <stdio.h> int a[1000000]; bool Find(int n,int key); int main() { int n,key,i; bool flag = false; while((scanf("%d",&n))!=EOF) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } scanf("%d",&key); flag = Find(n,key); if(flag) { printf("YES\n"); } else { printf("NO\n"); } } return 0; } bool Find(int n,int key) { int lowerBound = 0; int upperBound = n - 1; int midPoint = -1; bool exist = false; while(lowerBound <= upperBound) { midPoint = (lowerBound + upperBound)/2; if(a[midPoint] == key) { exist = true; break; } else if(a[midPoint] < key) { lowerBound = midPoint + 1; } else { upperBound = midPoint - 1; } } return exist; }
    转载请注明原文地址: https://ju.6miu.com/read-1308685.html
    最新回复(0)