栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【算法】插入排序算法的讲解和代码演示

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【算法】插入排序算法的讲解和代码演示

思路

有数组[26, -3, 14, -15, 0, 324, 98, 1, 22]
现对该数组进行排序,使用插入排序算法。
先来屡一下思路和步骤:

  1. 从下标为1的元素开始进行遍历;
  2. 如果它前面的元素比它大,那么将前面的元素进行后移,并记录下标;
  3. 直至遇见小于等于它的数,将当前元素插入上面记录的下标中。
讲解

第一步,记录当前元素(从下标为1的元素开始),即 -3;插入下标初始化为 -1。

第二步,将 -3 前面的所有元素与 -3 进行对比,大于 -3 的,进行后移,并将后移元素的下标赋值到插入下标中:

第三步,将当前元素 -3 插入到插入下标的位置:

这样就完成了一个元素的插入排序。以此类推即可完成整个数组排序。

实现
    @Test
    public void sortTest() {
        int[] nums = new int[]{26, -3, 14, -15, 0, 324, 98, 1, 22};
        insertSort(nums);
        System.out.println(Arrays.toString(nums));
    }

    private void insertSort(int[] nums) {
        if (nums.length < 2) {
            return;
        }
        // 从下标为1的元素开始遍历
        for (int i = 1; i < nums.length; i++) {
            // 记录当前元素
            int cur = nums[i];
            // 初始化插入下标为-1
            int insertIndex = -1;
            // 遍历当前元素前面的所有元素
            for (int j = i - 1; j >= 0; j--) {
                // 如果前面的某个元素大于当前元素,则前面的元素后移一位
                if (nums[j] > cur) {
                    // 元素后移
                    nums[j + 1] = nums[j];
                    // 记录插入下标
                    insertIndex = j;
                }
            }
            // 如果插入下标不等于-1,将当前元素赋值到插入下标
            if (insertIndex != -1) {
                nums[insertIndex] = cur;
            }
        }
    }

看一下运行结果:

这样插入排序就实现完成了。


喜欢本文的朋友不要忘记点一个免费的赞哦,你的赞将是我最大的动力。
如果觉得有用,也可以扫码支持博主。感兴趣的朋友,可以在扫码的时候添加博主微信。
欢迎评论区留言讨论。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/924511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号