IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 什么是插入排序? -> 正文阅读

[数据结构与算法]什么是插入排序?

文章目录

插入排序

简介

插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。

简单来说,就是将要排序的元素,分为两部分,一部分为有序表,一部分为无序表,每次从无序表中取出一个元素插入到有序表中。
刚开始第一个元素我们认为他是有序的,把后面的元素逐个插入到前面的有序队列中。

比如说:
序列[5,2,4,6,1,3]

有序:5
无序:2,4,6,1,3

第一次将2插入有序序列中
第一次插入后

有序:2,5
无序,4,6,1,3

第二次插入4
第二次插入后

有序:2,4,5
无序:6,1,3

第三次次插入6
第三次插入后

有序:2,4,5 ,6
无序:1,3

第四次插入1
第四次插入后

有序:1,2,4,5 ,6
无序:3

第五次插入3
第五次插入后

有序:1,2,3,4,5 ,6
无序:NULL

插入排序是稳定的;

代码:

//定义两个变量用来存储插入的数值,和将要插入的下标
        int insertValue;
        int insertIndex;
        //默认第一个数是有序的,从第二个数开始判断,直至最后一个数。
        for (int i = 1; i < arr.length; i++) {
            insertValue = arr[i];//待插入的值
            insertIndex = i - 1;//待插入的位置,第一次是要插入的前一个位置,然后往前移动
            while (insertIndex >= 0 && insertValue < arr[insertIndex]) {//如果待插入位置的数小于待插入的数就将此数后移;
                arr[insertIndex + 1] = arr[insertIndex];
                insertIndex--;
            }
            //当while循环结束,说明已经找到这个数,此时待插入处的索引,不符合,所以待插入的位置应为insertIndex+1;
            //比如当索引为-1时,退出,则值应插入0处
            if (insertIndex + 1 != i) {
                arr[insertIndex + 1] = insertValue;
            }
        }

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 13:00:34  更:2021-11-17 13:01:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:47:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码