C#核心知识回顾——19.插入排序

1.插入排序的基本原理

871542639
两个区域
排序区 未排序区
用一个索引值做分水岭
未排序区元素
与排序区元素比较
插入到合适位置
直到未排序区清空

cs 复制代码
int[] arr = { 8, 6, 7, 2, 9, 4 };
        //第一步
        //能取出未排序区的所有元素进行比较
        //i=1的原因:默认第一个元素就在排序区
        for (int i = 1; i < arr.Length; i++)
        {
            //第二步
            //每一轮
            //1.取出排序区的最后一个元素索引
            int sortIndex = i - 1;
            //2.取出未排序区的第一个元素
            int noSortNum = arr[i];
            //第三步
            //在未排序区进行比较
            //移动位置
            //确定插入索引
            //循环停止条件:
            //1.发现排序区所有元素比较完
            //2.发现排序区元素不满足条件
            while (sortIndex >= 0 && arr[sortIndex]>noSortNum)
            {
                //只要进了循环,证明满足条件
                //排序区元素需要往后退一格
                arr[sortIndex + 1] = arr[sortIndex]; 
                //移动到排序区前一个位置继续比较
                --sortIndex;
            }
            //最终插入数字
            //循环只是确认位置,循环结束后最终插入对应位置
            arr[sortIndex + 1] = noSortNum;
        }
总结:

为什么有两层循环

第一层循环:一次取出未排序区的元素进行排序

第二层循环:找到想要插入的位置

为什么第一层循环从1开始遍历

插入排序的关键是分两个区域

已排序区和未排序区

默认第一个元素在已排序区

为什么使用while循环

满足条件才比较

否则证明插入位置已确定

不需要继续循环

为什么可以直接往后移位置

每轮未排序数已记录

最后一个位置不怕丢

为什么确定位置后,是放在sort Index+1的位置

当循环停止时,插入位置应该是停止循环的索引1处

基本原理

两个区域

用索引值来区分

未排序区与排序区

元素不停比较

找到合适位置

插入当前元素

套路写法

两层循环

一层获取未排序区元素

一层找到合适插入位置

注意事项

默认开头已排序

第二层循环外插入

相关推荐
geovindu5 小时前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
软件黑马王子9 小时前
20.Resources资源加载:基本实现
开发语言·前端框架·c#
张人玉9 小时前
基于 C# / .NET 8 + Windows Forms + SQLite 的桌面银行业务演示系统——华夏示范银行管理系统
windows·sqlite·c#·.net
1314lay_10079 小时前
C#调用Sql Server存储过程,并且使用传入表结构
数据库·经验分享·笔记·sqlserver·c#
慧都小妮子10 小时前
.NET 报表控件选型对比:Stimulsoft 与 FastReport 怎么选
c#·.net·报表开发·数据可视化·报表控件·报表引擎选型
1314lay_100712 小时前
C#调用Sql Server存储过程,有返回值的
数据库·sqlserver·c#
我是唐青枫12 小时前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
开发语言·c#·.net
Am-Chestnuts12 小时前
AI 生成的数学公式,怎么用 DS随心转 导出成 Word 里能改的公式
人工智能·c#·word
geovindu13 小时前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
古少侠13 小时前
AI 内容粘到 Word 就乱?用 DS随心转 把复制的内容直接变成排版好的一段
人工智能·c#·word