算法中,有一种比线性查找算力费得更少的一种算法思想,叫“分治”,今天讲的是分治里的二分查找:
借助 (low+high)/2公式,找到搜索区域内的中间元素。图 1 中,搜索区域内中间元素的位置是 ⌊(1+10)/2⌋=5,因此中间元素是 27,此元素显然不是要找的目标元素。然后就是缩小范围。
下面就是一个二分查找的c++程序:
1 #include
2 #include
3 using namespace std;
4 int a[500005];
5 int n;
6 bool sreach(int key)
7 {
8 int mid,left=1,right=n;
9 while(left<=right)//遍历a[]
10 {
11 mid=(left+right)/2;//寻找中间值
12 if(a[mid]==key)//判断是否查到
13 {
14 return true;
15 }
16 else if(a[mid]
40 if(sreach(m))
41 {
42 printf("YES");
43 cout << endl;
44 }
45 else
46 {
47 printf("NO");
48 cout << endl;
49 }
50 }
51 return 0;
52 }
关于二分到现在基本讲完了,大家拜拜~~
手机扫一扫
移动阅读更方便
你可能感兴趣的文章