c++算法:二分
阅读原文时间:2023年08月20日阅读:1

算法中,有一种比线性查找算力费得更少的一种算法思想,叫“分治”,今天讲的是分治里的二分查找:

借助 (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]> m;
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 }

关于二分到现在基本讲完了,大家拜拜~~