线性查找法
线性查找法
根据线性查找法,给一个数组,一个目标值,查找目标值在数组中的位置。如果没有返回-1.
public class LinerSeach {
private LinerSeach(){}
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 [] = {24,18, 12, 9, 16, 66, 32, 4};
LinerSeach ls = new LinerSeach();
int target = ls.search(data,16);
System.out.println(target);
}
}
因为动词类对象,略微奇怪,所以就将search()函数声明为static不需要创建类对象就可以调用。
更改后代码为
public class LinerSeach {
private LinerSeach(){}
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 [] = {24,18, 12, 9, 16, 66, 32, 4};
int target = LinerSeach.search(data,16); //该行修改了
System.out.println(target);
}
}
因为查找不应该只能为int类型。所以运用范型。但是范型类只能接受类对象,不能接收基本数据类型。
public class LinerSeach {
private LinerSeach(){}
public static <E> int search(E[] data,E target){
for(int i=0;i<data.length;i++){
if (data[i].equals(target)){ // 判断不能再用全等,而是应该判断值是否相等
return i;
}
}
return -1;
}
public static void main(String[] args) {
Integer data [] = {24,18, 12, 9, 16, 66, 32, 4};
int target = LinerSeach.search(data,16);
System.out.println(target);
}
}
更改后测试代码
LinerSeach
import javax.sound.sampled.Line;
public class LinerSeach {
private LinerSeach(){}
public static <E> int search(E[] data,E target){
for(int i=0;i<data.length;i++){
if (data[i].equals(target)){
return i;
}
}
return -1;
}
public static void main(String[] args) {
// Integer data [] = {24, 18, 12, 9, 16, 66, 32, 4};
// int target = LinerSeach.search(data,16);
// System.out.println(target);
// Double[] data2 = {1.1, 1.2, 1.3, 1.5};
// System.out.println(LinerSeach.search(data2,1.3));
Student st1 = new Student(12,"张三");
Student st2 = new Student(13,"李四");
Student st3 = new Student(14,"wangwu");
Student st4 = new Student(15,"laogiao");
Student st5 = new Student(16,"yaoshui");
Student data3 [] = {st1, st2, st3, st4, st5};
Student stTest = new Student(12,"yaoshui");
System.out.println(LinerSeach.search(data3,stTest));
}
}
Student
import java.util.Objects;
public class Student {
private int age;
private String name;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
Student(int age,String name){
this.age = age;
this.name = name;
}
@Override
public boolean equals(Object o) {
if(this == o){
return true;
}
if(this == null){
return false;
}
if(this.getClass() != o.getClass()){
return false;
}
Student student = (Student) o;
return this.name.equals(student.name);
}
}

浙公网安备 33010602011771号