前端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)
相关推荐
Wect2 分钟前
学习React-DnD:实现多任务项拖拽-useDrop处理
前端·react.js
Mintopia20 分钟前
Trae Coding - 「Excel 秒变海报」—— 上传 CSV,一句话生成可打印信息图。
前端·人工智能·trae
晴殇i31 分钟前
CSS 相对颜色:告别 180 个颜色变量的设计系统噩梦
前端·css
MegatronKing31 分钟前
Reqable 3.0版本云同步的实践过程
前端·后端·测试
李剑一32 分钟前
我用Trae生成了一个Echarts 3D柱状图的Demo
前端·vue.js·trae
Crystal32834 分钟前
3D实战案例(飞行的火箭/创建3D导航/翻书效果/创建长方体/环环相扣效果)
前端·css
6***x54534 分钟前
前端组件库发展趋势,原子化CSS会成为主流吗
前端·css
00后程序员张34 分钟前
接口调试从入门到精通,Fiddler抓包工具、代理配置与HTTPS抓包实战技巧
前端·ios·小程序·https·fiddler·uni-app·webview
liliangcsdn36 分钟前
EnsembleRetriever中的倒数融合排序算法
算法·排序算法
快手技术37 分钟前
闪耀NeurIPS 2025!快手13篇论文入选,Spotlight 成果跻身前三!
前端·后端