• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

常用查找算法

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 40次 | 进入软件测试论坛讨论

领测软件测试网

//search.h包含了所有的常用查找算法

//使用顺序查找法的查找函数
//seqSearch(const int arr[],int first,int last,int target)
template <typename T>
int seqSearch(const T arr[],int first,int last,const T& target)
{
 int i=first;

 //扫描下标范围first<=i<last; 测试是否有匹配
 //或下标超出范围
 while (!(i==last)&&!(arr[i]==target))
  i++;

 return i;    //i是匹配值的下标,或者,如果没有匹配,则i=last
}

//模板函数find_last_of()的实现
template <typename T>
int find_last_of(const T arr[],int first,int last,const T& target)
{
 int i=last-1;

 //描扫下标范围first<=i<last;测试是否有匹配
 //或下标超出范围
 while(i>=first&&target!=arr[i])
  i--;
 if (i<first) return last; //没找到,则返回last
 return i;
}

//二分查找算法函数binSearch()的实现
template <typename T>
int binSearch(const T arr[],int first,int last,const T& target)
{
 int mid;                    //中间点的下标
 T midValue;               //用于保存arr[mid]元素值

 int origLast=last;          //保存last的初始值

 while(first<last)           //测试非空子表,如果是非空子表,则继续查找
 {
  mid=(first+last)/2;
  midValue=arr[mid];
  if (target==midValue)   //有一个匹配
   return mid;
  //确定要查找哪个子表
  else if(target<midValue)
   last=mid;
  else
   first=mid+1;        //查找子表的后半部分,重新设置first
 }
 return origLast;            //没有找到目标值
}


 


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网