java线性查找和二分查找

Posted DQ_CODING

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java线性查找和二分查找相关的知识,希望对你有一定的参考价值。

线性查找

package lesson.l7_array;

/**
 * Illustration
 *
 * @author DengQing
 * @version 1.0
 * @datetime 2022/6/23 14:19
 * @function 线性查找
 */
public class LineSearch 
    public static void main(String[] args) 
        String[]str="AA","BB","CC";
        boolean flag=false;
        String dest="BB";
        for (int i = 0; i < str.length; i++) 
            if (dest.equals(str[i]))
                System.out.println("已找到元素"+dest+",位置为"+i);
                flag=true;
                break;
            
        
        if (!flag)
            System.out.println("没有找到元素"+dest);
        
    


线性查找-方式2

public class LineSearch2 
    public static void main(String[] args) 
        String[]str="AA","BB","CC";
        String dest="DD";
        int i;
        for (i = 0; i < str.length; i++) 
            if (dest.equals(str[i]))
                System.out.println("已找到元素"+dest+",位置为"+i);
                break;
            
        
        if (i==str.length)
            System.out.println("没有找到元素"+dest);
        
    


二分查找

注意点:二分查找是与中间值做比较

package lesson.l7_array;

/**
 * Illustration
 *
 * @author DengQing
 * @version 1.0
 * @datetime 2022/6/23 14:43
 * @function 二分查找:数组必须有序
 */

public class BinarySearch 
    public static void main(String[] args) 
        int[] arr = 1, 2, 3, 4, 5, 10, 20, 100;
        int dest = 10;
        int left = 0;
        int right = arr.length;
        boolean flag = false;

        while (left <= right) 
            int middleIndex = (left + right) / 2;
            int middle = arr[middleIndex];
            if (dest == middle) 
                System.out.println("已找到" + dest);
                flag = true;
                break;
//                往前找
             else if (dest < middle) 
                right = middleIndex - 1;
//                往后找
             else 
                left = middleIndex + 1;
            
        
        if (!flag) 
            System.out.println("没有找到" + dest);
        
    


以上是关于java线性查找和二分查找的主要内容,如果未能解决你的问题,请参考以下文章

Day568.线性查找&二分查找 -数据结构和算法Java

学习数据结构笔记 ---查找算法(线性查找,二分查找,插值查找,斐波那契查找)

java数组回顾---线性查找最大值最小值---二分查找

Java数据结构与算法——线性查找 & 二分查找 & 插值查找

Java数据结构与算法——线性查找 & 二分查找 & 插值查找

Java小练习 数组的复制,反转及查找(线性,二分)