二分查找的acm题,提交了好几遍都不对,求各路大神的帮忙找找错
题目描述在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n,然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4
1 3 5 8
3
示例输出
YES
01.#include<stdio.h>
02.#define N 100000
03.void main()
04.{
05. int number[N],i,n;
06. int fac(int n);
07.
08. scanf("%d",&n);
09. while(scanf("%d",&n)!=EOF)
10. {
11. for(i=0;i<n;i++)
12. scanf("%d",&number[i]);
13. }
14. fac(int n);
15. if(1)
16. printf("yes");
17. if(0)
18. printf("no");
19.}
20.int fac(int n)
21.{
22. int number[N],x;
23. int high,low,mid;
24. high=N-1;
25. low=0;
26. mid=(high+low)/2;
27. scanf("%d",&x);
28. while(x!=number[mid]&&high-low!=1)
29. {
30. if(x>number[mid]) low=mid;
31. else high=mid;
32. mid=(high+low)/2;
33. }
34. if(x==number[mid])
35. return 1;
36. else
37. return 0;
38.}