查找算法入门

て烟熏妆下的殇ゞ 提交于 2020-03-03 07:16:13

1.查找算法简介

通常所说的有七种比较常用的查找算法:顺序查找,二分查找,插值查找,斐波那契查找,树表查找,分块查找,哈希查找。顺序查找即是按照数据的存储结构,从前往后一次进行查找,这种方式较为低效。如果数据是按照某种顺序存储在内存中,可以按照二分查找的方式,提高查询的效率。插值查找和斐波那契查找属于对二分查找的优化。树表查找是基于树形存储结构的查找方式,常见的树形存储结构主要有二叉树,平衡二叉树和红黑树。分块查找是二分查找和顺序查找的一种改进的方法,由于只要求索引表是有序的,对块内节点并没有排序的要求,因此特别适合于节点动态变化的情况,说的通俗一点,就是将待查找的数组进行分组,确定每个分组内元素的取值范围,然后将待查找的元素在其对应的范围内进行顺序查找。哈希查找也叫散列查找,整个散列查找过程分为两步:1.在存储时,通过散列函数计算记录的散列地址,并按照此散列地址存储该记录。2.当查找的时候,一样通过散列函数计算记录的散列地址,然后访问散列地址的记录。

2.顺序查找与二分查找

本文主要是简单对顺序查找和二分查找这两个基本的查找方式进行简单的介绍,后面会重点对哈希查找和树表查找进行介绍,欢迎大家一起交流讨论,共同进步。

2.1 顺序查找

顺序查找就是按照存储顺序从前往后进行查找,没什么好说的,直接上代码。

public class shunxu {
    public static void main(String[] args) {
        int[] arr = new int[]{4,5,8,2,3,6};
        int tar = 8;
        int index=-1;
        for(int i=0;i<arr.length;i++){
            if(arr[i]==tar){
                index=i;
                break;
            }
        }
        System.out.println(index);
    }
}

2.2 二分查找

二分查找通常用于将数据按照某种顺序存储时,进行查找,可以提高查找的效率。

public class erfen {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,5,8,9,10,20,35,80,100};
        int tar = 90;
        int index=-1;
        int begin=0;
        int end = arr.length;
        int mid = (begin+end)/2;
        while(true){
            if(begin>=end){
                System.out.println("数组中没有查找的数据");
                break;
            }
            if(arr[mid]==tar){
                index=mid;
                System.out.println(index);
                break;
            }else{
                if(tar<arr[mid]){
                    end = mid-1;
                }else{
                    begin=mid+1;
                }
            }
            mid = (begin+end)/2;
        }
    }
}

3.总结与展望

查找算法在以后的学习和工作中会用的比较多,这里只是简单的介绍了比较基础的两种,随着后期学习的深入,我会逐渐的将其余比较常用的查找算法记录下来,欢迎大家一起讨论学习,文中有分析不妥或者用词不当的地方,也欢迎朋友们指出来。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!