算法入门 -> 线性查找法

359 阅读1分钟

1、什么是算法

一系列解决问题的、清晰的、可执行的计算机指令

2、算法的五大特点

有限性、确定性、可行性、输入、输出

3、线性查找法

顾名思义:线性查找就是简单顺序或逆序查查找

beta1版本实现如下

public class LinearSearch {
    public static void main(String[] args) {
        int[] arr = {3, 4, 1, 78, 23};
        System.out.println(LinearSearch.search(arr,6));
        System.out.println(LinearSearch.search(arr,78));
    }

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

是不是简单的受不了 😃,那就加一点难度

beta2 泛型版本实现如下

public class LinearSearch {
    private LinearSearch(){}
    public static void main(String[] args) {
        Integer[] arr = {3, 4, 1, 78, 23};
        System.out.println(LinearSearch.search(arr,6));
        System.out.println(LinearSearch.search(arr,78));
    }

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

beta3自定义Dog类版本实现如下

//自定义Dog类
public class Dog {
    public String name;

    public Dog(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object dog) {
        if (this == dog) {
            return true;
        }
        if (dog == null) {
            return false;
        }
        if (this.getClass() != dog.getClass()) {
            return false;
        }
        Dog newDog = (Dog) dog;
        return this.name.equals(newDog.name);
    }
}
//测试Dog类
public class LinearSearch {
    private LinearSearch() {
    }

    public static void main(String[] args) {
        Dog[] dogs = {
                new Dog("当当"),
                new Dog("丁丁"),
                new Dog("哈哈")
        };
        Dog dangdang = new Dog("当当");
        Dog dingding = new Dog("丁丁");
        System.out.println(LinearSearch.search(dogs, dangdang));
        System.out.println(LinearSearch.search(dogs, dingding));
    }

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

衷心感谢算法大牛:Liuyubobobo 老师