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 老师