线性查找法

线性查找法

根据线性查找法,给一个数组,一个目标值,查找目标值在数组中的位置。如果没有返回-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);
    }
}

  

posted @ 2020-09-12 07:13  呦啊哈  阅读(109)  评论(0)    收藏  举报