排序算法---插入排序

插入排序的思想

每一趟将一个待排序元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上,直到所有待排序元素元素全部插入为止。

插入排序的代码实现

第一轮:

j = 0 对比值:5 6>5 6,6,4 j = -1 5,6,4

第二轮:

j = 1 对比值:4 5>4 5,6,6

j = 0 对比值:4 5,5,6 j=-1 4,5,6

javascript 复制代码
function insertionSort(arr) {
    var i, j, key;
    for (i = 1; i < arr.length; i++) {
        key = arr[i];
        j = i - 1;
 
        // 将大于key的元素向后移动
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        // 插入key
        arr[j + 1] = key;
    }
    return arr;
}

插入排序的复杂度

时间复杂度

插入排序的平均时间复杂度为O(n^2),其中n是数组的长度。最好情况下是O(n)

空间复杂度:O(1)

相关推荐
stolentime6 分钟前
树套树+标记永久化:[POI 2006] TET-Tetris 3D&&SPOJ1741 TETRIS3D - Tetris 3D题解
c++·算法·线段树·树套树·标记永久化
XiYang-DING7 分钟前
【LeetCode】链表 + 快慢指针找倒数结点 | 链表中倒数第k个结点
算法·leetcode·链表
一轮弯弯的明月21 分钟前
有序整数对个数-欧拉函数
java·算法·蓝桥杯·学习心得
dazzle35 分钟前
机器学习算法原理与实践-入门(十):基于PaddlePaddle框架的线性回归
算法·机器学习·paddlepaddle
2501_9403152637 分钟前
【无标题】1.用哈希表做两数之和
算法·哈希算法·散列表
浅念-1 小时前
Linux 进程与操作系统
linux·运维·服务器·网络·数据结构·笔记·网络协议
计算机安禾1 小时前
【数据结构与算法】第20篇:二叉树的链式存储与四种遍历(前序、中序、后序、层序)
c语言·开发语言·数据结构·c++·学习·算法·visual studio
菜菜的顾清寒1 小时前
力扣HOT100(16)除了自身以外数组的乘积
算法·leetcode·职场和发展
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章45-圆卡尺
图像处理·人工智能·opencv·算法·计算机视觉
会编程的土豆1 小时前
【数据结构与算法】二叉树遍历 集合
数据结构·算法