前端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)
相关推荐
star learning white10 分钟前
xm C语言12
服务器·c语言·前端
tabzzz10 分钟前
大道至简:万字漫谈前端性能监控
前端·javascript·性能优化
0思必得018 分钟前
[Web自动化] CSS基础概念和介绍
前端·css·python·自动化·html·web自动化
小胖霞20 分钟前
全栈系列(15)github Actions自动化部署前端vue
前端·node.js·github
未来魔导20 分钟前
基于 Gin 框架的 大型 Web 项目推荐架构目录结
前端·架构·gin
foundbug99943 分钟前
Modbus协议C语言实现(易于移植版本)
java·c语言·前端
Luna-player44 分钟前
在前端中list.map的用法
前端·数据结构·list
用户47949283569151 小时前
面试官问 React Fiber,这一篇文章就够了
前端·javascript·react.js
小徐_23331 小时前
Gemini 3做粒子交互特效很出圈?拿 TRAE SOLO 来实现一波!
前端·ai编程·trae
LYFlied1 小时前
【一句话概述】Webpack、Vite、Rollup 核心区别
前端·webpack·node.js·rollup·vite·打包·一句话概述