常见的七种查找算法JAVA

1. 基本查找

也叫做顺序查找

说明:顺序查找适合于存储结构为数组或者链表。

基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表示查找失败。

package BasicSearc;

import java.util.ArrayList;

//基本查找/顺序查找
//核心:
//从0索引开始挨个往后查找
//需求:定义一个方法利用基本查找,查询某个元素是否存在,考虑重复的,并且把索引返回
//数据如下:{131, 127, 147, 81, 103, 23, 7, 79,81}
//比如找81.索引就是3 8
public class demo1 {
    public static void main(String[] args) {
        int[] arr = {131, 127, 147, 81, 103, 23, 7, 79, 81};
        int num = 81;
        ArrayList<Integer> findindex = findindex(arr, num);
        for (int i = 0; i < findindex.size(); i++) {
            System.out.print(findindex.get(i) + " ");
        }

    }

    //心得:
    //如果我们要返回多个数据的话,可以把这些数据存在数组或者集合里面
    private static ArrayList<Integer> findindex(int[] arr, int num) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                list.add(i);
            }
        }
        return list;

    }

}

2. 二分查找

也叫做折半查找

说明:元素必须是有序的,从小到大,或者从大到小都是可以的。

如果是无序的,也可以先进行排序。但是排序之后,会改变原有数据的顺序,查找出来元素位置跟原来的元素可能是不一样的,所以排序之后再查找只能判断当前数据是否在容器当中,返回的索引无实际的意义。

  基本思想:也称为是折半查找,属于有序查找算法。用给定值先与中间结点比较。比较完之后有三种情况:

  • 相等

    说明找到了

  • 要查找的数据比中间节点小

    说明要查找的数字在中间节点左边

  • 要查找的数据比中间节点大

    说明要查找的数字在中间节点右边

如图

比如查找79,计算出mid,发现mid比79大,说明右半边不看了,然后max=mid-1.如下图  

 

  在计算mid ,mid=23,发现23小于79,就不看左边了 然后min=mid+1,然后max和mid同时指向了79,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值