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);
}
}

Java实现三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找)的更多相关文章

  1. Java中常用的查找算法——顺序查找和二分查找

    Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...

  2. 查找算法(4)--Fibonacci search--斐波那契查找

    1.斐波那契查找 (1)说明 在介绍斐波那契查找算法之前,我们先介绍一下很它紧密相连并且大家都熟知的一个概念——黄金分割. 黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二, ...

  3. java学习-循环结构-查找算法-顺序查找

    今天回顾了简单算法,顺序查找.发现了数组出现重复数字,无法输出第二个位置就跳出循环了. 利用所学知识解决了.放上代码,同时在代码里给大家分享思路. 欢迎大神教导,欢迎指正. ; System.out. ...

  4. Java实现的二分查找算法

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点 ...

  5. 二分查找算法,java实现

    二分查找算法是在有序数组中用到的较为频繁的一种算法. 在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间复杂度为O(n),但二分查找算法则更优,因为其查找时间复杂度 ...

  6. java基础---数组的查找算法(2)

    一.查找的基本概念 查找分为有序查找和无序查找,这里均以数组为对象,有序查找指的是数组元素有序排列,无序查找指的是数组元素有序或无序排列 平均查找长度(Average Search Length,AS ...

  7. 二分查找算法java

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元 ...

  8. [Data Structure & Algorithm] 七大查找算法

    查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找.本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找.插值查找以及斐波那契查找 ...

  9. 七大查找算法(附C语言代码实现)

    来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...

随机推荐

  1. EasyUI:datagrid控件简介

    EasyUI:datagrid控件简介 1,水平滚动条属性: //显示滚动条 fitColumns:false //不显示滚动条 fitColumns:true

  2. 程序包com.sun.istack.internal不存在

    添加一下依赖 <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --><dependency> ...

  3. Ubuntu系统Anaconda下载安装与切换源教程【转】

    本文转载自:https://blog.csdn.net/qq_36268036/article/details/81517893 1. 下载安装: 这里选用国内清华大学的Tuna开源软件镜像站作为演示 ...

  4. v4l2 下载

    To clone the master development repository, install git, and run: git clone git://github.com/torvald ...

  5. AI理论学习笔记(一):深度学习的前世今生

    AI理论学习笔记(一):深度学习的前世今生 大家还记得以深度学习技术为基础的电脑程序AlphaGo吗?这是人类历史中在某种意义的第一次机器打败人类的例子,其最大的魅力就是深度学习(Deep Learn ...

  6. 带SSL证书的httpclient 远程接口工具类

    package com.iups.wx.util; import java.io.IOException; import java.io.UnsupportedEncodingException; i ...

  7. Servlet容器初始化IOC容器

    <!-- ServletContext参数,配置Ioc容器的xml文件名 --> <context-param> <param-name>contextConfig ...

  8. Java中的条件运算符

    条件运算符( ? : )也称为 “三元运算符”. 语法形式:布尔表达式 ? 表达式1 :表达式2 运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值 例如: ...

  9. tensorflow笔记:模型的保存与训练过程可视化

    tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代码分析 ...

  10. DOCKER实战案例

    操作系统:[root@yz6205 ~]# docker search busyboxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDbusybox Busybox ...