扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法

发布时间 2023-04-16 17:22:12作者: 皿哥的技术人生

1、算法描述

在数组中逐个查找元素,即遍历。

2、思路原理

如算法描述,基本是最简单的代码块了,没有什么额外的原理。

3、初步的代码实现

线性查找法初步的代码实现:
package com.mosesmin.datastructure.week01.chap02;

/**
 * @Misson&Goal 代码以交朋友、传福音
 * @ClassName LinearSearch03
 * @Description TODO
 * @Author MosesMin
 * @Date 2023/4/13
 * @Version 1.0
 */
public class LinearSearch03 {

    public int search(int [] data,int target){
        for (int i = 0; i < data.length; i++)
            if (data[i] == target)
                return i;
        return -1;
    }

    public static void main(String[] args) {
        int [] data = {1,18,22,10,35};
        LinearSearch03 ls = new LinearSearch03();
        int res = ls.search(data,10);
        System.out.println(res);

        int res2 = ls.search(data,666);
        System.out.println(res2);
    }
}

将search方法修改为静态方法(用static关键字修饰即可)

package com.mosesmin.datastructure.week01.chap02;

/**
 * @Misson&Goal 代码以交朋友、传福音
 * @ClassName LinearSearch03
 * @Description TODO
 * @Author MosesMin
 * @Date 2023/4/13
 * @Version 1.0
 */
public class LinearSearch03 {

    public static int search(int [] data,int target){
        for (int i = 0; i < data.length; i++)
            if (data[i] == target)
                return i;
        return -1;
    }

    public static void main(String[] args) {
        int [] data = {1,18,22,10,35};
        int res = LinearSearch03.search(data,10);
        System.out.println(res);

        int res2 = LinearSearch03.search(data,666);
        System.out.println(res2);
    }
}

为了阻止其他类、其他用户创建LinearSearch03类对象,可以将类LinearSearch03的构造方法声明为私有的。


即:

private LinearSearch03(){}

完整的类代码:

package com.mosesmin.datastructure.week01.chap02;
/**
 * @Misson&Goal 代码以交朋友、传福音
 * @ClassName LinearSearch03
 * @Description TODO
 * @Author MosesMin
 * @Date 2023/4/13
 * @Version 1.0
 */
public class LinearSearch03 {

    private LinearSearch03(){}
    public static int search(int [] data,int target){
        for (int i = 0; i < data.length; i++)
            if (data[i] == target)
                return i;
        return -1;
    }

    public static void main(String[] args) {
        int [] data = {1,18,22,10,35};
        int res = LinearSearch03.search(data,10);
        System.out.println(res);

        int res2 = LinearSearch03.search(data,666);
        System.out.println(res2);
    }
}

至此,这个类在设计层面已经没有大的问题了。

4、运行结果

输入:数组data、目标元素target
运行结果:

mark

输出:target在data中的索引
查找的第1个目标元素10,它在数组中的索引为3;
查找的第2个目标元素666,它不存在于数组中,所以返回-1。