线性查找:从头到尾一步步依次序检查特定数值是否出现在线性序列中,如果当前元素值与该特定数值相同,此算法返回当前元素在此序列的位置,否则就移至下一个元素。
(一)C语言实现线性查找:
char* strchr(char* s,int c){ //字符串s中查找数值c
while(*s !='\0' && *s!=c){
}
【指向序列结尾的指针】 代替 【整数计数法】
char *find1(char* first,char* last,int c){
}
char A[N];
...
char* result=find1(A,A+N,c);
if(result==A+N){//查找失败
}else{//查找成功}
C语言中的三种不同种类指针:a.普通而有效指针如&A[0],可提领。b.非法指针如NULL。c.越过尾端指针,不可提领。
range[first,last)
一般满足如下性质:
(1)任何指针p,empty range[p,p) 空区间是有效区间。
(2)[first,last)有效且不为空,则[first+1,last)也必有效。
(3)[first,last)有效,mid为满足以下条件的任何指针:first出发后可到达mid,mid出发后可到达last,那么[first,mid) 和 [mid,last)亦有效
(4)如果[first,mid) 和 [mid,last)有效,那么[first,last)必有效。
【注意】每个range一次只能支持一个有效的iterator
(二)C++实现线性查找:
template <class Iterator,class T>
Iterator find(Iterator first,Iterator last,const T&
}
}
【注意】Iterator是算法与数据结构之间的接口。以iterator作为引数,便可以作用在许多不同的数据结构上。我们仅仅要求:iterator能够以某种线性顺序遍历某个数据结构,以访问其中的所有元素。
STL