JS 插入排序

JavaScript实现 插入排序 算法(INSERTION-SORT) JavaScript实现插入排序 算法(INSERTION-SORT) 阅读详情

算法描述

插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 将新元素插入到该位置后;
  6. 重复步骤2~5

代码

写法一:

function insertSort(arr) {

    if (!Array.isArray(arr)) {
        return;
    }

    let index = 0;
    let sortedFlag = true;
    for (let i = 1; i < arr.length; i++) {
        index = i;
        for (let j = i - 1; j >= 0; j--) {
            if (arr[index] < arr[j]) {
                let temp = arr[index];
                arr[index] = arr[j];
                arr[j] = temp;

                index = j;
                sortedFlag = false;
            }
        }

        if (sortedFlag) {
            break;
        }
    }
}

写法二:

function insertSort2(arr) {

    if (!Array.isArray(arr)) {
        return;
    }

    var len = arr.length;
    var preIndex, current;
    let sortedFlag = true;
    for (var i = 1; i < len; i++) {
        preIndex = i - 1;
        current = arr[i];
        while (preIndex >= 0 && arr[preIndex] > current) {
            arr[preIndex + 1] = arr[preIndex];
            preIndex--;
            sortedFlag = false;
        }
        arr[preIndex + 1] = current;
        if (sortedFlag) {
            break;
        }
    }
}

时间复杂度和空间复杂度

时间复杂度
最好的情况:O(n)
最坏的情况:O(n^2)
平均:O(n^2)

空间复杂度
O(1),基本是个定值,除了数组本身和临时变量占用内存,并没有额外用到很多内存。

如有错漏,欢迎大佬们拍砖~

关于排序算法的一部分公共的知识点,有的在冒泡排序中提到过。比如设立标志位小优化,复杂度的简要分析等。下面给出直通车

冒泡排序

科研党必看!Zotero+Claude3插件实战:如何用AI高效阅读文献(附详细配置步骤) 本文详细介绍了如何通过Zotero与Claude3插件的深度整合,实现科研文献的高效阅读与管理。从环境配置到核心功能实战,包括智能摘要生成、精准学术翻译和论文写作辅助等,帮助科研人员大幅提升工作效率。特别适合需要处理大量文献的研究者使用。 阅读详情

相关推荐

手把手教你用Wireshark国密版分析TLCP和IPSec协议(附下载地址)

本文详细介绍了Wireshark国密版在TLCP和IPSec协议分析中的实战应用,包括环境配置、协议解析、合规性检查及高级分析技巧。该工具针对商用密码算法(如SM2/SM3/SM4)进行了专项优化,支持GB/T 38636-2020 TLCP和GB/T 36968-2018 IPSec VPN等国家标准,帮助开发者与安全工程师高效完成密评分析任务。

weixin_29325955的博客 551

JavaScript - 插入排序的两种方式

插入排序1 新建一个新数组 循环遍历原始数据,把原始数组内的每一个逐个插入到新数组内 在插入的时候,按照一定的顺序插入 // 原始数组 var arr = [ 9, 2, 5, 3, 7, 6, 4, 1, 8 ] // 准备一个新数组 var newarr = [] // 循环遍历原始数组 for (var i = 0; i < arr.length; i++) { // arr[i] 就是原始数组中的每一个数据, 也就是要插入新数组的

weixin_44175290的博客 2509

Qt6.8.0(win64)安装教程

启动 Visual Studio 2022 Community,选择 “继续但无需代码” 运行,然后打开Option设置,Add一条版本配置,Location 选择 D:\Qt\6.8.0\msvc2022_64\bin\qmake,点击确定。我是win11系统,所以选择windows版,下载路径二选一即可。方案1:默认情况下,额外勾选图中两个组件(总共40多G)方案2:按图中自定义勾选组件(总共5.8G)选择Custom Installation。我选的方案2,总共5.81G。

D4G1TIAO的博客 9067

js的插入排序

经典排序方法----插入排序

z12845464的博客 2723

ARC学习(6)arc 编译器overlap 地址重叠方式使用

摘要:本文介绍了ARC编译器中使用overlap地址重叠的方法。

张一西的博客 717

无人驾驶感知融合——横摆角速度的多源估计算法解析

本文深入解析了无人驾驶感知融合中的横摆角速度多源估计算法,详细介绍了轮速差法、侧向加速度法、曲率法和惯性传感器直读法四种计算方法及其优缺点。通过卡尔曼滤波实战案例,展示了多源融合算法在提升精度和稳定性方面的显著优势,并探讨了工程实践中的时间对齐、坐标系统一等关键问题。

weixin_31458015的博客 462

JS实现插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法,其核心思想是逐步构建有序序列,对于每个未排序的元素,在已排序部分找到合适的位置插入。本文将深入研究插入排序的原理、实现方式等

CreatorRay的博客 712

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

插入排序(Insertion Sort)

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法描述 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序)大于新元素,将该...

akuan1992的博客 441

在hyper-v管理器中修改WSL虚拟交换机后,打开wsl闪退

此次是因为修改了WSL虚拟交换机造成的wsl打不开或闪退,还有一种可能是关闭了hyper-v造成了wsl。

DN金猿的博客 1171

K-Core, K-Shell & K-Crust傻傻分不清楚

K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。

欢迎订阅 -- 小源笔迹 2255

JS实现插入排序(讲解+代码)

OK,现在我们说第三种排序,插入排序,并且用JS语言来实现一下。 所谓插入排序,就是把最小的(或者最大的),一次次插入到最前面,从而达到排序的效果。 通俗易懂!!! 现在我们来解释一下怎么插,插成一个有序的数组。 原理就是,我们从第二个开始,比较当前元素前面的所有元素。 找到一个比他大的元素,就把这个元素向后移一位。 然后直到没有比他大的元素了,这个位置就是它的归宿。 现在我们用画图来解释一下。 如果我们有一个数组【4,3,2,1,0】。 我们从第二个开始,由于4比他大,就要向后移,然后没有了,3就去4

weixin_46726346的博客 3964

【Autoware】2小时安装Autoware1.13(保姆级教程)

Autoware是一款“一体化”开源自动驾驶软件,能实现感知、决策、控制等功能,通过在Ubuntu中搭建Autoware开发环境和案例的运行,使大家对自动驾驶技术的实现有一个更清晰的认识。

DevFrank的博客 1万+

【JavaScript基础】-js实现插入排序【详细可运行!】

具体看代码: //插入排序JavaScript实现 let insertSortArray = []; let insertSortNum; function show(insertSortArray, insertSortNum) { let str=""; for (let i = 0; i < insertSortNum; i++) { if (i > 0) console.log(' '); str+=insertSortArray[i]+

叙话代码 469

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaScript插入排序

JavaScript插入排序1 思想2 代码 1 思想 插入法排序通过构建有序数组元素的存储,对未排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应位置并插入。 插入法排序基本思想: 假设第一个数是有序的,剩余的数是无序的 选择第二个数与第一个数进行比较,如果第二个数比第一个数小,则交换两个数的位置,如果第二个数比第一个数大,则位置不发生变动 选择第三个数与第二个数进行比较,如果第三个数小于第二个数,则交换两个数的位置,然后用第二个数与第一个数进行比较,如果第二个数小于第一个数,交换

橘猫吃不胖的博客 1150

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

php中js对内容排序,JavaScript中的插入排序详解

本篇文章讲述了JavaScript中的插入排序,大家对JavaScript中的插入排序不了解的话那么我们就一起来看看本篇文章吧,本文章利用JavaScript简单的实现了插入排序,好了废话少说进入正题吧JavaScript中的插入排序插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。当然,如果你说你打扑克牌摸牌的时候从来...

weixin_42415451的博客 160

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JS中的插入排序

JS中的插入排序 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-e...

weixin_43755513的博客 188

JavaScript实现插入排序算法

一、插入排序算法原理 插入排序是先将数组中的一部分数进行排序,再将数组中的还未排序的数与已排序的数逐一进行比较,每一次比较都判断二者的大小关系,大的数右移,为小的数腾出位置,直到遇到比这个数小的数为止,该数即“插入”到此处左移,接着将下一个未排序的数与左边已排好序的数逐一比较,重复这一过程。 二、JS实现 1、创建一个待排序的数组 var arr = [6,3,5,2,7,1]; 2、创建中间变...

技术无止境,人生仍探索。 876

javascript实现简单的插入排序

javascript实现简单的插入排序 思路: 插入排序类似我们打扑克牌时,整理牌的过程 ,我们先把第一次抽的牌放到数组的第一项,然后每次抽取的牌都和这个数组中的牌进行比较,如果比他大就放到后面,比他小就放到前面。 function insertSort(ary){ //创建一个新数组用来返回(类似我们手中的牌) let newAry=[]; // 将传入数组的第一项存放到...

qq_18372191的博客 221

JavaScript的排序算法——插入排序

插入排序(Insertion Sort) 插入排序是一种简单的排序算法,这种算法可以一次构建最终排序的数组(或数列)。它在大型数列上的排序效率会远低于一些更高级的排序算法,如快速排序、堆排序、归并排序。 中心思想:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 编码实现: function insertionSort(arr){ var ne...

coding 616

javascript实现插入排序

javascript实现插入排序 插入排序是将数组分成两部分,一部分是排好序的,另一部分是待排序的,依次将待排序的元素取出来与排好序的部分一一对比,直到找到适合该元素的位置并添加进去。一般默认数组左侧第一个元素是排好序的,然后从第二元素开始遍历,分别左侧排好序的部分对比进行插入。 实现代码: function insertSort(arr){ // 数组长度为1,直接返回原数组 if(arr....

xm2by的博客 828

JavaScript实现插入排序

// 插入排序 var arr = [5, 36, 99, 41, 2, 3, 5.26, 54, 852, 12, 0, 36, 6, -8]; for (let i = 1; i < arr.length; i++) { let now = arr[i], p_index = i - 1; while (p_index >= 0 && now < arr[p_index]) { ...

qq_45259240的博客 539

JS插入排序

插入排序是依次取下一个元素,在有序部分从后向前扫描,找的正确的位置插入。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Conte

weixin_50648332的博客 171

SortVision项目中的JavaScript插入排序实现解析

SortVision项目中的JavaScript插入排序实现解析 插入排序算法基础 插入排序是一种简单直观的排序算法,其工作原理类似于我们整理扑克牌的方式。算法将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,将其插入到已排序部分的正确位置。 这种算法在小型数据集或基本有序的数据集上表现优异,时间复杂度在最优情况下为O(n),最差情况下为O(n²)。空间复杂度为O(1),是一种原地排序...

gitblog_07672的博客 359

折半插入排序——JS实现

js实现折半插入排序代码: var arr = [49, 38, 65, 97, 76, 13, 27, 49]; console.log('arr:' + arr); binaryInsertionSort(arr); console.log('sortArr:' + arr); function binaryInsertionSort(arr){ for(var i=1;i<arr.length;i++){ //第一个数不需要排,其他

艺术编程 330

【插入排序算法的 JavaScript 实现及性能分析】

插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间),因此在从后向前扫描过程中,需要反复把已排序的元素逐步向后挪位,为新元素提供插入空间。本文介绍了插入排序算法的基本原理,并通过 JavaScript 实现了该算法。通过对比较次数和移动次数的统计,我们可以更直观地了解插入排序的性能特点。

烂然星陈的博客 997
上一篇: JS 冒泡排序
下一篇: 初识Promise
大头爱学习
博客等级 码龄7年 14粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值