#如果!定义的HAVE_BSEARCH_H__#定义HAVE_BSEARCH_H__//此文件是FXT库的一部分。//版权所有(C)20102012 Joerg Arndt//许可证:GNU通用公共许可证第3版或更高版本,//请参阅主目录中的文件COPYING.txt。#包括“fxttypes.h”模板ulong bsearch(常量类型*f,ulong n,常量类型v)//返回f[]中等于v的第一个元素的索引//如果没有这样的元素,则返回n。//f[]必须按升序排序。//必须有n=0{ulong nlo=0,nhi=n-1;while(nlo!=nhi){ulong t=(nhi+nlo)/2;如果(f[t]<v)nlo=t+1;否则nhi=t;}如果(f[nhi]==v)返回nhi;否则返回n;}// -------------------------模板ulong bsearch_geq(常数类型*f,ulong n,常数类型v)//返回f[]中>=v的第一个元素的索引//如果没有这样的元素,则返回n。//f[]必须按升序排序。//必须有n=0{ulong nlo=0,nhi=n-1;while(nlo!=nhi){ulong t=(nhi+nlo)/2;如果(f[t]<v)nlo=t+1;否则nhi=t;}如果(f[nhi]>=v)返回nhi;否则返回n;}// -------------------------模板ulong bsearch_leq(常数类型*f,ulong n,常数类型v)//返回f[]中<=v的第一个元素的索引//如果没有这样的元素,则返回n(设置了所有位的字)。//f[]必须按升序排序。//必须有n=0{ulong nlo=0,nhi=n-1;while(nlo!=nhi){ulong t=(nhi+nlo)/2;如果(f[t]>v)nlo=t+1;否则nhi=t;}如果(f[nhi]<=v)返回nhi;否则返回n;}//-------------------------#endif//!定义的HAVE_BSEARCH_H__