Java实现三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找)

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);
    }
}
时间: 2024-11-14 12:19:49

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

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

Java中常用的查找算法——顺序查找和二分查找 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg

JDK自带的二分查找算法和自己写的普通二分查找算法的比较(java二分查找源代码)

一.描述 解析和比较JDK自带的二分查找算法和自己写的普通二分查找算法,使用二进制位无符号右移来代替除2运算,并使用产生随机数的方法产生一定范围的随机数数组,调用Arrays类的sort()静态方法,对int类型数组进行排序. Math.random()的用法:会产生一个[0,1)之间的随机数(注意能取到0,不能取到1),这个随机数的是double类型,要想返回指定范围的随机数如[m,n]之间的整数的公式:(int)(Math.random()*(m-n+1)+m) 二.源代码 <span st

每天一点算法-查找算法-顺序查找

如何在一个集合中查找一个特定元素,判断其是否存在,最简单的算法循环该集合,从起点开始查找,一个个元素去比对 假设存在集合:int [] a = {1,2,3,4,5,6,7,8,9,10} 条件:查找7在数组a中是否存在 for(int i = 0;i< a.length - 1; i ++) { if(7 == a[i]) {   //存在 } } 此算法的优点是:简单,缺点是当集合大的时候,查找的效率低,从第一个查找到最后一个 原文地址:https://www.cnblogs.com/hpz

Java 查找算法

这个问题有几个点要先确认 必须是有序,如果无序的话就只能全遍历了 查找算法跟数据结构相关,不同的数据结构适用于不同的查找算法 查找算法与磁盘I/O有一定的关系,比如数据库在索引排序的时候,如果每次都从磁盘读取一个节点然后进行判断 数组 如果知道下标的话就方便了,查找的复杂度为1. 如果是针对值的查找,那么顺序遍历是O(n), 二分查找 使用二分查找的话可以减少时间复杂度为:O(logn) /** * 二分查找又称折半查找,它是一种效率较高的查找方法. [二分查找要求]:1.必须采用顺序存储结构

Java二分查找算法

二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.通过一次比较,将查找区间缩小一半. 折半查找是一种高效的查找方法.它可以明显减少比较次数,提高查找效率.但是,折半查找的先决条件是查找表中的数据元素必须有序. 折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除

查找算法:二分查找、顺序查找

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205 查找算法 查找算法是在存在的序列(list) 中查找特定的目标(target),要求序列中每个记录必须与一个关键词(key)关联才能进行查找. 查找算法通常需要两个输入: 1.被查找的序列 2.要查找的关键词 查找算法的输出参数和返回值: 1.返回类型为 Error_co

二分查找算法java

二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.通过一次比较,将查找区间缩小一半. 折半查找是一种高效的查找方法.它可以明显减少比较次数,提高查找效率.但是,折半查找的先决条件是查找表中的数据元素必须有序. 折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除

[Data Structure &amp; Algorithm] 七大查找算法

查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找.本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找.插值查找以及斐波那契查找都可以归为一类——插值查找.插值查找和斐波那契查找是在二分查找的基础上的优化查找算法.树表查找和哈希查找会在后续的博文中进行详细介绍. 查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录). 查找算法分类: 1)静态查找和动态查找: 注:静态或者动态都是针对查找表而言

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

来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契查找 5.树表查找 6.分块查找 7.哈希查找 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找.本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找.插值查找以及斐波那契查找都可以归为一类--插值查找.插值查找和斐波那契查找是