public class Search {
public class BiTreeNode{
int m_nValue;
BiTreeNode m_pLeft;
BiTreeNode m_pRight; }
//顺序查找,查到则返回该值下标,查不到返回-1.
public int SequenceSearch(int[] a,int b){
if(a==null)
return -1;
for(int i=0;i<a.length;i++){
if(a[i]==b)
return i;
}
return -1;
}
//折半查找,二分查找,要求查找的数组是有序的。只适合于静态查找。
public int BinarySearch(int[] a,int b){
if(a==null)
return -1;
int low=0;
int high=a.length-1;
while(low<=high){
int middle=(low+high)/2;
if(a[middle]==b)
return middle;
if(a[middle]<b)
low=middle+1;
else
high=middle-1;
}
return -1;
}
//折半查找的递归算法
public int BinarySearch1(int[] a,int b,int low,int high){
if(a==null||low>high)
return -1;
int middle=(low+high)/2;
if(a[middle]==b)
return middle;
if(a[middle]<b)
return BinarySearch1(a,b,middle+1,high);
else
return BinarySearch1(a,b,low,middle-1);
}
//二叉排序树,二叉查找树,二查搜索树,是一颗具有如下特点的树,树的左边都比它小,树的右边都比它大。
public BiTreeNode BinaryBiSearch(BiTreeNode pHead,int b){
if(pHead==null)
return null;
if(pHead.m_nValue==b)
return pHead;
if(pHead.m_pLeft!=null)
return BinaryBiSearch(pHead.m_pLeft,b);
if(pHead.m_pRight!=null)
return BinaryBiSearch(pHead.m_pRight,b);
return null;
}
public static void main(String[] args){
int[] a={1,2,3,5,7,8,10};
Search search=new Search(); int i=search.BinarySearch(a,1);
int k=search.BinarySearch1(a, 3,0,a.length-1);
int j=search.SequenceSearch(a, 3);
System.out.println(i+" "+j+" "+k);
}
}

最新文章

  1. 用ProGet搭建内部的NuGet服务器
  2. C# 获取Excel中的合并单元格
  3. yii2 modal弹窗之ActiveForm ajax表单异步验证
  4. Android屏幕适配笔记
  5. C语言中史上最愚蠢的Bug
  6. final修饰的变量是引用不能改变,还是引用的对象不能改变???
  7. 决战JS(二)
  8. 【转载】8天学通MongoDB——第三天 细说高级操作
  9. Spring利用JDBCTemplate实现批量插入和返回id
  10. kfreebsd不适用于实际环境
  11. JavaScript对象的创建之构造函数
  12. Good Bye 2015 B. New Year and Old Property 计数问题
  13. 【解决方案】jquery live的change事件在IE下失效
  14. 【MFC学习笔记-作业6-sin图像】【OnDraw(CDC* pDC)】
  15. List中函数用法 First,FirstOrDefault,Single,SingleOrDefault的区别
  16. mysql常用的hint
  17. JavaScript RegExp(正则)
  18. [TFS教程]TFS: Get Command
  19. YISMILE微信小程序使用说明
  20. 谈谈WPF中的CollectionView与CollectionViewSource

热门文章

  1. 网络:W5500用浏览器配置设备
  2. 20145235李涛《网络对抗》逆向及Bof基础
  3. Go语言学习之常量(The way to go)
  4. 混合开发的大趋势之 一个Android程序员眼中的 React.js 块级作用域 和 let
  5. PasswordHasher 算法
  6. spark学习7(spark2.0集群搭建)
  7. flume-ng源码阅读memory-channel(原创)
  8. BOOST学习笔记
  9. qtjambi_ZC
  10. Spring中Bean的生命周期是怎样的