二分查找:
int binarysearch(int a[],n,x){}
其中a[]表示数组,n表示这个数组的长度,x表示要查找的元素
二分查找的条件:while(L<=R)
二分模板如下:
#include<iostream>
using namespace std;
int binarySearch(int a[],n,x)
{
int L=1,R=n;
int mid,ans;
while(L<=R)
{
mid=(L+R)/2;
if(a[mid]==x)
{
ans=mid;
break;
}
if(a[mid]>x)
R=mid-1;
else
L=mid+1;
}
return ans;
}
其中L+R可能会超过int的范围,所以(L+R)/2可以写成L+(R-L)/2;
在整数二分中,更新区间的方法是:L=mid+1或者R=mid-1;
在浮点二分中,更新区间的方法是:L=mid或者R=mid;
栈:
栈是一种满足一定约束的线性数据结构,其约束是:只允许在栈的一端插入或删除元素,这一端被称为栈顶,相对的我们可以把另一端称为栈底
向栈中插入元素为push,从栈顶弹出元素为pop;栈的重要性质:先进后出,先进入栈的元素,出来的时间越晚
常用top表示栈顶的位置
标准库里的stack在头文件<stack>里面,支持push(),pop()等基本操作,还支持top()来获取栈顶元素,empty()来判断栈是否为空,size()计算栈中元素的个数
push 压入元素到栈顶
pop 弹出栈顶元素
top 返回栈顶元素
empty 栈是否为空
size 栈的元素个数