一遍文章搞定插入排序-java版

  1. 插入排序

1.1 插入排序的基本介绍

插入排序属于内排,就是以插入的方式来达到排序的目的

1.2 插入排序思想

将待排序的数组看成一个有序列表和一个无序列表。刚开始时有序列表只有一个元素 arr[0],无序列表有n-2 的数据 arr[1] ~ arr[n-1]。排序开始,每次从无序列表中取出第一个元素,找到相应的位置,并将其按照插入有序列表中。

1.3 插入排序的时间复杂度和空间复杂度等

算法名称 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性
插入排序 O(n^2) O(n) O(n^2) O(1) 稳定
  1. 代码演示

/**
 * @author shengjk1
 * @date 2020/4/9
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] arr = new int[8];
        for (int i = 0; i < 8; i++) {
            arr[i] = (int) (Math.random() * 80000000);
        }

        for (int i = 1; i < arr.length; i++) {
            int insertIndex = i;
            int insertValue = arr[insertIndex];
            
            //找到相应的位置
            while (insertIndex - 1 >= 0 && arr[insertIndex - 1] > insertValue) {
                arr[insertIndex] = arr[insertIndex - 1];
                insertIndex--;
            }
            //并将其按照插入有序列表中
            arr[insertIndex] = insertValue;
            System.out.printf("第%d次遍历 insertIndex %d arr:%s", i, insertIndex, Arrays.toString(arr));
            System.out.println();
        }
    }
}

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

推荐阅读更多精彩内容

  • Ba la la la ~ 读者朋友们,你们好啊,又到了冷锋时间,话不多说,发车! 1.冒泡排序(Bub...
    王饱饱阅读 5,766评论 0 7
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 3,892评论 0 0
  • 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对...
    Demon_code阅读 4,680评论 0 2
  • 5月23日下午,区委宣传部副部长康定银、政府办党总支书记牛伟强、政府办副主任豆来平、宣传部办公室主任邹峰一行到五里...
    二七五里堡办事处阅读 2,726评论 0 0
  • 昨天APP坏了没法在2018年第一天做打卡。 长得越大,正如老爸老妈说的,好像每天都差不多,日子越过越快了。 那么...
    shadow_cheung阅读 1,371评论 0 0