前端javascript中的排序算法之插入排序

插入排序(Selection Sort)基本思想
插入排序每次排一个数组项,以此方式构建最后的排序数组。假定第一项已经排序了,接着,
它和第二项进行比较,第二项是应该待在原位还是插到第一项之前呢?这样,头两项就已正确排
序,接着和第三项比较(它是该插入到第一、第二还是第三的位置呢?),以此类推。

代码实现

js 复制代码
function insertSort(arr) {
  const len = arr.length;
  let j, tmp;
  //默认第一项已经排序
  for (let i = 1; i < len; i++) {
    j = i;
    //临时记录的变量
    temp = arr[i];
    //比较
    while (j > 0 && arr[j - 1] > temp) {
      arr[j] = arr[j - 1];
      j--;
    }
    //插入
    arr[j] = temp;
  }
  return arr;
}

复杂度

  • 空间复杂度(O(1)),也是一种原址比较
  • 时间复杂度O(n²)

代码测试

js 复制代码
  var arr = [1, 67,45,30, 89, 10,23];
  const ret = insertSort(arr);
  console.log("🚀 ~ ret:", ret)
相关推荐
Lee川8 分钟前
React 快速入门:Vue 开发者指南
前端·vue.js·react.js
用户61581396951627 分钟前
Elpis: 基于vue3+webpack5+nodejs搭建一个完整项目
前端
90后的晨仔33 分钟前
S C:\WINDOWS\system32> pnpm i -g openclaw@latest pnpm : 无法加载文件 C:\xx\A
前端
蜡台1 小时前
Node 版本管理器NVM 安装配置和使用
前端·javascript·vue.js·node·nvm
狂奔蜗牛飙车1 小时前
Day3:HTML5 基础标签:h1-h6、p、hr、br、a、img
前端·html·html5·html常用标签的使用方法
木斯佳1 小时前
前端八股文面经大全:腾讯前端暑期提前批一、二、三面面经(下)(2026-03-04)·面经深度解析
前端
bluceli1 小时前
前端国际化(i18n)实战指南:构建多语言应用的完整方案
前端
hh随便起个名1 小时前
React组件通信
前端·react.js·前端框架
前端 贾公子2 小时前
vite-plugin-eruda-pro 在vite中使用eruda
前端
Jackson__2 小时前
Agent Skill 和 Rules 有什么区别?
前端·agent·ai编程