p157算法2.2插入排序

public class Insertion {

public static void sort(Comparable[] a){//所有实现了Comparable接口的数组都可以使用插入排序
    
    int N = a.length;//数组的长度,便于遍历使用

    for(int i = 1; i<N;i++){//因为插入排序的思想是当前角标和前一个角标作比较,所以,外循环i的初始值为1,那么内循环中就可以和1角标前面的0角标比较了
                            //内循环中,j=i,出口判断条件为j>0,则j最小满足条件为1,那么他还可以与j-1=0角标作对比,
        for(int j = i;j>0;j--){
            if(less(a[j],a[j-1])){//如果a[j]小于a[j--],那么就交换j和j--值的位置
                exch(a,j,j-1);//调用自定义的交换方法
            }
        }
    }
}

private static void exch(Comparable[] a, int j, int i) {//调用自定义的交换方法
    Comparable temp = a[j];
    a[j] = a[i];
    a[i] = temp;
    
}

private static boolean less(Comparable v, Comparable w) {//v小于w的话返回真
    return v.compareTo(w) <0;
}

public static void main(String[] args) {
    Integer[] a = new Integer[]{888,494,110,12,154,123,456,356,486,576,16,654,23,451,};
    sort(a);
    for(int num : a){
        System.out.print(" "+num);
    }

}

}
插入排序比选择排序要快一点,插入排序只与左边作比较,而选择排序则只与右边作比较
算法学习来自<算法第四版>书籍

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • “当你越来越漂亮时 自然有人关注你 当你越来越有能力时 自然会有人看得起你 改变自己 你才有自信 梦想才会慢慢...
    冷漠无情的犬哥阅读 1,235评论 0 1
  • 今天被西弗老爸离世的新闻刷屏,点开后看着剧中人的现状勾起的是满满的回忆。 那时美国的情景喜剧刚刚引进,每一集只有短...
    Kitty_菁彩人生阅读 4,037评论 4 3
  • 目录 25 最后的抉择 谢老爷在书房里来回踱着步。 书房里的墙壁上挂满了字画,是他多年来的收藏。随着工厂经营越来越...
    元歌华阅读 3,440评论 2 7