基础算法之插入排序Insertion Sort
原理
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。相信大家都打过扑克牌,很好理解。
例子
将数组[5,6,3,1,8,7,2,4]进行从小到大排序
排序步骤:
|
![]() |
动画演示
![]() |
![]() |
代码参考
static void Main(string[] args) { int[] intArray = { 3, 6, 4, 2, 5, 1 }; Insertion_Sort(intArray); foreach (var item in intArray) { Console.WriteLine(item); } Console.ReadLine(); } static void Insertion_Sort(int[] unsorted) { int i, j, temp; for (i = 1; i < unsorted.Length; i++) { // 检查有无序状态 if (unsorted[i-1] > unsorted[i]) { temp = unsorted[i]; // 移位 for (j = i; j > 0 && unsorted[j - 1] > temp; j--) { unsorted[j] = unsorted[j - 1]; } // 强势插入 unsorted[j] = temp; } } }
参考资料
分类:
基础算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?