二分查找

来源:互联网 发布:骑士vs勇士第五场数据 编辑:程序博客网 时间:2024/06/12 05:51

看以个论坛,说很少有人一次性就把二分查找写正确,觉得很不可思议。

然后自己就试着写写。然后自己就惊讶了,自己写的什么对不是。

而作者是正确的,确实自己缺少严谨的精神,大部分人也是。自己太想当然了,认为对的

就瞎敲上去了,其实真正对与不对,自己根本就没有深究。

其实,不管是大的题目还是小的题目,重要的是你有没有仔细推敲,将所有的情况都列举出来,

如果就想当然的觉得是这样的,那么你很可能没有那么严谨,然后错的一塌糊涂。

贴出代码:

#include <stdio.h>#include <string.h>#include <iostream>#include <string>using namespace std;int N;int a[100];int value;int binarySearch(){int left = 0;int right = N - 1;while (left <= right){int mid = left + ((right - left) >> 1);if (a[mid] == value){return 1;}else if (value < a[mid]){right = mid - 1;}else if (value > a[mid]){left = mid + 1;}}return 0;}int main(){while (scanf("%d", &N) != EOF){for (int i = 0; i < N; i++){scanf("%d", &a[i]);}scanf("%d", &value);sort(a, a + N);int ans = binarySearch();printf("%d\n", ans);}system("pause");return 0;}


原创粉丝点击