/**
 * @desc: 插入排序
 * @author: 毛会懂
 * @create: 2020-12-23 13:25:00
 **/
public class Insertion {
    public static void sort(Comparable[] arr){
        for(int i = 1; i < arr.length;i++){
            for(int j = i;j > 0;j--){
                if(isExchange(arr[j-1],arr[j])){
                    exchange(arr,j-1,j);
                }else{
                    //既然不交换了,那后面的for也不用交换了
                    break;
                }
            }
        }
    }

    private static Boolean isExchange(Comparable o1,Comparable o2){
        return o1.compareTo(o2) > 0;
    }

    private static void exchange(Comparable[] arr,int i,int j){
        Comparable temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}
//插入排序
public static void main2(String[] args) {
    Integer[] arr = {10,8,20,30,5,7,4,12,40,30,1,2,4,3};
    Insertion.sort(arr);
    Arrays.asList(arr).forEach(System.out::println);

    Person[] persions = {new Person("b",11),new Person("a",10),new Person("c",12),new Person("b",111),
            new Person("a",5),new Person("c",4)};
    Insertion.sort(persions);
    for (Person person : persions) {
        System.out.println(person);
    }
}

附:
/**
 * @desc: 实现Comparable接口
 * @author: 毛会懂
 * @create: 2020-12-23 13:36:00
 **/
public class Person implements Comparable<Person>{
    private String name;

    private Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Persion{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Person o) {
        return this.age - o.getAge();
    }
}

  

posted on 2020-12-23 16:16  毛会懂  阅读(134)  评论(0)    收藏  举报