惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
U
Unit 42
WordPress大学
WordPress大学
Y
Y Combinator Blog
罗磊的独立博客
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
博客园 - 叶小钗
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
V
V2EX
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
SegmentFault 最新的问题
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - Eagle6970

ASP.NET Core实现MCP Streamable HTTP 豆包生成C#微博API HTTP调用实例代码 豆包生成C#即梦API HTTP调用实例代码 SQL Server - sp_spaceused 子网掩码和IP地址范围 [VS Code] Run JavaScript [VS Code] Copy所有包含关键字的行 [数据结构学习笔记25] 归并排序(Merge Sort) [VS Code] 使用dotnet CLI安装和管理NuGet包 [数据结构学习笔记24] 选择排序(Selection Sort) [数据结构学习笔记22] 冒泡排序(Bubblesort) [数据结构学习笔记21] 快速排序(Quicksort) [数据结构学习笔记20] 深度优先搜索(DFS)和广度优先搜索(BFS) [数据结构学习笔记19] 二叉树遍历(Binary Tree Traversal) [数据结构学习笔记18] 二分查找(Binary Search) [数据结构学习笔记17] 线性查找(Linear Search) [数据结构学习笔记16] 汉诺塔(Towers of Hanoi) [数据结构学习笔记15] 斐波那契数列(Fibonacci) [数据结构学习笔记14] 递归简介(Recursion)
[数据结构学习笔记23] 插入排序(Insertion Sort)
Eagle6970 · 2025-02-11 · via 博客园 - Eagle6970

插入排序(Insertion Sort)

举例

5,       3,1,2,9,7

从第二个数字开始,也就是3开始。数列分为两部分,5,和剩下部分。5称为已排序;3-7称为未排序。这个时候3称为活动数字,我们要做的是,把3放到已排序组中。

3,5         1,2,9,7

1,3,5         2,9,7

1,2,3,5         9,7

1,2,3,5,7        9

1,2,3,5,7,9

代码(javascript)

function insertionSort(input) {
   let activeNumber;
   for (let i = 1; i < input.length; i++) {
       activeNumber = input[i];
       
        for (int j = i - 1; j >= 0; j--) {
            if (input[j] > activeNumber) {
               input[j+1] = input[j];
            } else {
               break;
            }
        }
        input[j+1] = activeNumber;
    }
}

插入排序效率也不高。时间复杂度是O(n^2)。它的优点是不需要额外的空间。