<--个人成长笔记系列-->解析排序算法之插入排序

JAVA知识点:

    (掌握)插入排序:

        1、是稳定排序;

        2.1、最坏时间复杂度是O(n^2);需要进行n-1轮,每一轮最坏情况下,需要比较1次、2次、3次...一直到n-1次

        2.2、最好时间复杂度是O(n);本身有序的情况下,轮数不变,但每一轮只比较一次就跳出循环,所以最好情况下时间复杂度是On

        3、空间复杂度是O(1),因为插入排序是在原地排序,没有引入额外的数据结构;

        4、和冒泡排序的区别:插入排序的优势在于元素交换方式。冒泡排序每次交换需要三步,插入排序平均每次交换只要一步



public static void sort(int[] array){

    for(int i=1;i<array.length;i++){

        int insertValue =array[i];

        int j=i-1;

        //从右向左比较元素的同时,进行元素复制

        for(; j>=0&&insertValue<array[j]; j--){

            array[j+1]=array[j];

        }

        //insertValue的值插入适当位置

        array[j+1]=insertValue;

    }

}

public static void main(String[] args) {

    int array[]={12,1,3,46,5,0,-3,12,35,16};

    sort(array);

    System.out.println(Arrays.toString(array));

}


    (掌握)源码断点:比较Arrays.sort()和Collections.sort()方法

        记录链接:https://juejin.im/post/5d513925e51d4561cf15df99

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,239评论 0 1
  • 排序算法总结 分类编程技术 排序算法平均时间复杂度 冒泡排序O(n2) 选择排序O(n2) 插入排序O(n2) 希...
    Zhs_Android阅读 1,513评论 0 0
  • quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pi...
    黎景阳阅读 3,304评论 0 1
  • 本文使用angularjs及bootstrap,所需库请自行下载 目的 能够根据所需实现表单的验证,如果不符合需求...
    奶爸赚奶粉阅读 8,954评论 8 8
  • 这世界上最伟大的就是母爱 如果父爱是巍峨挺拔的高山,给我们依靠,那么母爱就像一条涓涓细流,无时无刻地滋润着我的心田...
    繁花诗景阅读 4,017评论 6 8

友情链接更多精彩内容