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