二分查找模板

    科技2022-07-15  131

    二分查找

    二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

    完整代码如下

    #include<bits/stdc++.h> using namespace std; const int maxn=1e6+4;//数据范围,1e6+4等同于1000004 int num[maxn];//储存元素 int ans;//记录答案 int search(int opt,int left,int right) { while(left < right) { int mid = (right-left)/2 + left;//二分 if(num[mid] >= opt) { right = mid;//缩小范围 } else left = mid + 1;//同理,缩小范围 if(num[left] == opt) { ans = left;//记录答案 return 1;//返回true } } return 0; } int main() { int n,m,opt; scanf("%d%d",&n,&m); for(int i = 1;i <= n;i++) { scanf("%d",&num[i]); } for(int i = 1;i <= m;i++) { scanf("%d",&opt); if(search(opt,1,n)) printf("%d ",ans); else printf("-1 "); } return 0;//结束程序~ }

    模板推荐:P2249 【深基13.例1】查找

    Processed: 0.012, SQL: 8