1001.二分查找

来源:互联网 发布:淘宝客机器人免费安装 编辑:程序博客网 时间:2024/06/05 12:48

题目

分析:二分查找,从给定序列中,先寻找序列最中间的数,如果中间的数比给定的数小,则取 中间数后的序列为新的序列,否则去中间数前的序列为新序列。重复查找,直到找到,或者序列为空。

代码

#include<stdio.h>#include<stdlib.h>int serach(int *A, int n, int goal);void main(){int m, n, i, goal;scanf("%d", &n);//动态分配数组int *A = (int *)malloc(sizeof(int) * n);for (i = 0; i < n; i++) scanf("%d", &A[i]);scanf("%d", &m);for (i = 0; i < m; i++){scanf("%d", &goal);if (serach(A, n, goal))printf("Yes\n");elseprintf("No\n");}}//存在返回1 不存在返回0int serach(int *A, int n, int goal){int i, j,temp;i = 0, j = n - 1;while (i<=j){temp = (i + j) / 2;if (A[temp] == goal) return 1;if (A[temp] < goal)i = temp + 1;elsej = temp - 1;}return 0;}

0 0
原创粉丝点击