二分查找
数据结构上机实验之二分查找
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n,然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4 1 3 5 8 3
示例输出
YES
#include<stdio.h> int a[10000000];开数组是定义全局变量; int main() { int key, n, i; int low, high, mid; while( ~scanf("%d", &n))// 第一次没考虑多组输入; { int k=0;//应把k放在while循环里,每次输入n时都得初始化k; low = 1; high = n; for(i=1; i<=n; i++) scanf("%d", &a[i]); scanf("%d", &key); while(low<=high) { mid = (low+high)/2; if(key==a[mid]) { k = mid; break; } else if(key<a[mid]) high = mid -1; else low = mid + 1; } if(k!=0) printf("YES\n"); else printf("NO\n"); } return 0; }
每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。