前端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)
相关推荐
颜酱7 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
用户059540174467 小时前
把AI长期记忆测试从手动验证换成pytest,2天揪出11个隐藏Bug
前端·css
lichenyang4538 小时前
从 Vite 空项目到 AIGC 图片工作台:我如何打通生图、任务轮询、生成库与 Canvas 动态特效
前端·人工智能
泡沫冰@8 小时前
上章节中文件的讲解
前端·网络·nginx
进击的丸子9 小时前
APP人脸识别增值版Harmony Demo实操与关键代码解析
前端·程序员·harmonyos
a1117769 小时前
唯美花朵风格的黑胶唱片音乐播放器
前端·css·css3
Hilaku9 小时前
工作 5 年后,决定你薪资上限的究竟是什么?
前端·javascript·程序员
爱分享的程序猿-Clark9 小时前
【前端分享】vue3 有 keep-alive属性吗?
前端
Revolution619 小时前
页面更新后为什么出现 Loading chunk failed:旧页面如何请求了已删除的构建产物
前端·面试·前端工程化
JavaGuide9 小时前
GitHub 9.8 万 Star!把整个代码仓库变成知识图谱,这个 AI Coding 工具太适合 Claude Code / Codex 了
前端·后端·ai编程