Java实现三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找)
2015-07-14 14:31
776 查看
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); } }
相关文章推荐
- 在javaweb中,当新建一个servlet的时候,运行服务器提示服务器启动失败,解决如下
- 快速排序的Java代码
- java 初学者基础教学
- (Eclipse) 安装Subversion1.82(SVN)插件
- java成长历程2
- 将java项目转为web项目,配置web项目的文件夹
- Java 接口常量反模式及如何定义 Java 常量
- Java WebService 简单实例
- 通过反编译字节码来理解 Java 枚举
- Kettle变量和自定义java代码的实例应用
- java序列化2[实现Externalizable接口,可控序列化]
- JAVA环境配置及第一个JAVA程序
- JAVA集合类详解
- java内置锁synchronized的可重入性
- Java继承与构造函数
- java基础==面向对象
- eclipse ctrl失效
- JAVA多线程实现的三种方式
- jdk学习记录
- myeclipse 中 TODO 注释的用法