C#算法之插入排序算法

算法系列:各位朋友,我们继续C#算法的学习之路。今天同样是一个简单直观的排序算法--插入排序。插入排序的原理是通过构建有序序列,对未排序序列进行扫描,找到相应位置并插入。插入排序,在数据规模较小或者部分数据已经处于有序的情况下,其效率很高。

插入排序的事件复杂度不唯一,平均值为n的平法,其中n是列表的长度。空间复杂度为1。

C#简单例程如下:

cs 复制代码
    static void Main()
    {
        int[] array = { 3, 5, 1, 4, 6, 2 };
        Console.WriteLine("原始数组:");
        foreach (int item in array)
        {
            Console.Write(item + " ");
        }
        Console.WriteLine();
        
        InsertionSort(array);
        
        Console.WriteLine("排序后的数组:");
        foreach (int item in array)
        {
            Console.Write(item + " ");
        }
    }

    static void InsertionSort(int[] array)
    {
        int n = array.Length;
        for (int i = 1; i < n; i++)
        {
            int key = array[i];
            int j = i - 1;
            
            // 将较大的元素向后移动
            while (j >= 0 && array[j] > key)
            {
                array[j + 1] = array[j];
                j--;
            }
            
            // 将key插入到正确的位置
            array[j + 1] = key;
        }
    }
相关推荐
programhelp_4 分钟前
Roblox Coding OA 面经分享|题量不小,但整体更偏工程思维
人工智能·算法·面试
周末也要写八哥4 分钟前
机器学习评价指标之平均概念
人工智能·算法·机器学习
hhcgchpspk6 分钟前
Windows API线程学习
c语言·windows·学习·多线程·windows api
jerryinwuhan8 分钟前
SparkStream详细笔记
笔记·c#·linq
运筹vivo@9 分钟前
33. 搜索旋转排序数组(leetcode每日一题)
c++·算法
m0_6294947312 分钟前
LeetCode 热题 100-----27. 合并两个有序链表
数据结构·算法·leetcode·链表
玖釉-12 分钟前
Slang 和 HLSL 的区别与用法详解:现代图形渲染中的两种 Shader 编程语言
c++·算法·图形渲染
t-think14 分钟前
深入了解指针(3)
c语言·算法
GIOTTO情14 分钟前
Infoseek 危机公关自动化闭环系统,实现 PR 运维工程化
人工智能·算法·机器学习
hef28815 分钟前
利用C 图形界面展示MATLAB算法的高效混合编程实践
windows·算法·matlab