JS排序算法

MSPM0 Type-C在线烧录全解析:从原理到批量生产实践 在线烧录技术是现代嵌入式系统开发中的基础环节,通过内置Bootloader实现固件的远程更新。其核心原理是利用芯片的启动序列检测特定条件,切换至烧录模式后通过USB协议完成数据传输。这种技术显著降低了硬件复杂度与生产成本,特别适用于物联网设备和便携仪器等需要快速迭代的场景。以MSPM0系列微控制器为例,其Type-C接口整合了供电、调试与烧录功能,通过UniFlash工具链可实现从开发到量产的平滑过渡。实际应用中需重点关注Boot引脚配置、选项字节保护等工程细节,避免因电压波动或协议识别失败导致的烧录中断。 阅读详情

 1. 冒泡排序

 数组相邻元素进行比较,每次比较将最大/最小的值冒泡到应在的位置,经过n-1次比较后,数组变为有序数组。

function bubble(arr) {
    let temp;

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

    return arr;
}

2.选择排序

每次比较一轮,将比较的结果(最大值或者最小值)放在应在的位置。

function selectSort(arr) {
    let min;

    for(let i = 0; i < arr.length; i++) {
        // 将当前位置设为最小值
        min = i;
        for(let j = i + 1; j < arr.length; j++) {
            // 遍历数组其他元素,查看有没有更小的
            if (arr[j] < arr[min]) {
                min = j;
            }
        }
        // 如果当前位置不是最小值,那么交换位置
        if (min !== i) {
            const temp = arr[min];
            arr[min] = arr[i];
            arr[i] = temp;
        }
    }

    return arr;
}

3.  插入排序

将未排序的元素插入到已排序的数组中去,最后形成一个排序数组。

function insertSort(arr) {
    let value, i, j;

    for(i = 0; i < arr.length; i++) {
        value = arr[i];
        // 比较排序的数组和当前元素
        // 从排序数组最后一项开始比较,如果大于当前值,则向后移一位
        // 直到当前值大于排序数组的某一个值
        for(j = i - 1; j > -1 && arr[j] > value; j--) {
            arr[j + 1] = arr[j];
        }
        arr[j + 1] = value;
    }

    return arr;
}

 4. 合并排序

将两个已经排序的数组合并成一个有序的数组。

// 合并两个数组
function merge(left, right) {
    let i = 0, j = 0;
    const result = [];
    while(i < left.length && j < right.length) {
        if (left[i] < right[j]) {
            result.push(left[i++]);
        } else {
            result.push(right[j++]);
        }
    }
    return result.concat(left.slice(i), right.slice(j));
}

// 将数组拆分成若干个数组,两两合并
function mergeSort(arr) {
    if (arr.length === 1) {
        return arr;
    }
    const middle = Math.floor(arr.length / 2);
    const left = arr.slice(0, middle);
    const right = arr.slice(middle);
    return merge(mergeSort(left), mergeSort(right));
}

 5. 快速排序

快速排序通过选择一个基准值将数据进行分割,使得小于基准值的数据在一个数组中,大于基准值的数据在另一个数组,然后递归这两个数组直到排序完成。

function getPosition(arr, left, right) {
    let pointer = arr[left];

    while (left < right) {
        while (left < right && arr[right] > pointer) {
            right--;
        }
        arr[left] = arr[right];

        while (left < right && arr[left] <= pointer) {
            left++;
        }
        arr[right] = arr[left];
    }

    arr[left] = pointer;

    return left;
}

function quickSort(arr, left, right) {
    if (left < right) {
        let pos = getPosition(arr, left, right);
        quickSort(arr, left, pos - 1);
        quickSort(arr, pos + 1, right);

        return arr;
    }
} 
JavaScript学习总结(15)——十大经典排序算法的JS版 前言 这世界上总存在着那么一些看似相似但有完全不同的东西,比如雷锋和雷峰塔,小平和小平头,玛丽和马里奥,Java和javascript….当年javascript为了抱Java大腿恬不知耻的让自己变成了Java的干儿子,哦,不是应该是跪舔,毕竟都跟了Java的姓了。可如今,javascript来了个咸鱼翻身,几乎要统治web领域,Nodejs,React Native的出现使得javascr 阅读详情

相关推荐

用HFSS复现经典论文:从零搭建带孔缝屏蔽箱体模型(附完整建模步骤与避坑指南)

本文详细介绍了如何使用HFSS电磁仿真软件复现经典论文中的带孔缝屏蔽箱体模型,包括从零搭建模型、设置激励与边界条件、求解优化及结果验证的全过程。特别提供了建模中的布尔运算陷阱、激励设置技巧等实操难点的避坑指南,帮助工程师和学生深入理解电磁屏蔽效能研究。

weixin_30530339的博客 159

探索JavaScript中的十大经典排序算法

还在为JavaScript中的数组排序问题而烦恼吗?面对海量数据时,如何选择合适的排序算法成为每个开发者必须掌握的技能。本文将带你深入探索JavaScript中的十大经典排序算法,从基础概念到实战应用,为你构建完整的排序算法知识体系。 ## ???? 排序算法的重要性与分类 排序算法是计算机科学中最基础也是最重要的算法之一。在JavaScript开发中,无论是前端数据处理还是后端业务逻辑,排序都是...

gitblog_00057的博客 336

PCIE配置和地址空间

来源:https://www.jianshu.com/p/574e9a2cbc4e 每个PCIe设备,有这么一段空间,Host软件可以读取它获得该设备的一些信息,也可以通过它来配置该设备,这段空间就叫做PCIe的配置空间。不同于每个设备的其它空间,PCIe设备的配置空间是协议规定好的,哪个地方放什么内容,都是有定义的。PCI或者PCI-X时代就有配置空间的概念,那时的配置空间如下: 图6.1 整个配置空间就是一系列寄存器的集合,其中Type 0是Endpoint的配置,Type 1是Brid.

qq_28643619的博客 4060

js 数组排序算法 【选择排序】

js 数组排序算法 【选择排序】

姗姗的博客 523

从原理图到PCB:基于Allegro的8槽PXIe背板高速设计实战

本文详细介绍了基于Allegro软件进行8槽PXIe背板高速设计的完整实战流程。从理解规范、原理图设计、PCB布局规划,到高速PCIe差分对与精密时钟的布线艺术,再到电源与地处理以及最终的设计验证与生产文件输出,系统性地阐述了确保背板信号完整性、电源完整性和系统稳定性的关键技术与工程实践。

weixin_28312391的博客 208

基于深度学习卷积神经网络的医学图像乳腺癌分类

一、项目背景与意义乳腺癌是女性最常见的恶性肿瘤之一,其早期发现和治疗对于提高患者的生存率和生活质量至关重要。然而,乳腺癌的诊断通常依赖于医生的经验和主观判断,这不仅耗时而且可能存在误差。近年来,深度学习技术特别是卷积神经网络(CNN)在图像处理领域取得了显著进展,为乳腺癌的自动分类提供了新的解决方案。本项目旨在利用深度学习卷积神经网络构建一套高效、准确的医学图像乳腺癌分类系统,辅助医生进行乳腺癌的早期诊断和治疗。二、技术实现。

2301_79810943的博客 976

JavaScript实现一个排序算法的演示动画

在学习排序算法的时候,单纯的文字或者代码无法直观地表示出算法的具体排序过程,而自己手动画出示意图也比较麻烦,所以作者使用 JavaScript 实现了一个简单的排序算法的演示动画页面。

千里之行,始于足下 779

INCA软件操作指南:手把手教你生成和解析DCM标定数据文件

本文详细介绍了INCA软件在汽车ECU开发中生成和解析DCM标定数据文件的全流程。从A2L文件导入到DCM文件生成,再到HEX文件导出,手把手教你掌握标定数据处理的实用技巧,包括参数标定、曲线标定和常见问题排查,帮助工程师提升工作效率。

weixin_29271053的博客 1062

[js点滴]JavaScript排序算法汇总

排序算法是将一系列的值按照顺序进行排列的方法。冒泡排序简介 冒泡排序(Bubble Sort)是最易懂的排序算法,但是效率较低,生产环境中很少使用。 它的基本思想是: 依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位置。这样一遍比较下来,能够保证最大(或最小)的数排在最后一位。 再对最后一位以外的数组,重复前面的过程,直至全部排序完成。 由于每进行一次这个过程,

图解AI 5135

【RViz2】导入urdf模型时报错:Could not load resource xxx,Unable to open file xxx,Error retrieving file xxx

初学ROS2,想要在RViz2中显示urdf模型。其中.urdf文件引用了外部的meshes文件夹。

qq_43557907的博客 9488

《唤醒你的AI同事:WorkBuddy从零上手》000:介绍及目录

《唤醒你的AI同事:WorkBuddy从零上手》全书导览与总目录:000–043 共 44 篇,覆盖从环境搭建、对话基础到资料库、行业助手与多模态生成的入门实战。含完整篇目速查与编号直达,建议关注收藏。

LuckyHanMo的博客 604

十大经典排序算法js实现

十大经典排序算法JS实现方式

zeroJustGG的博客 489

解决Gradle中NPM命令失效问题

摘要:本文分析了IntelliJ IDEA中Gradle执行npm命令失败的问题,报错显示"npm"文件不存在。通过确认npm安装路径、检查系统PATH与Gradle环境的差异,提出两种解决方案:1) 在build.gradle中使用npm绝对路径;2) 通过launchctl修改用户PATH。实例展示了如何修改Gradle脚本或系统配置来解决该问题,指出跨平台开发中环境变量配置的重要性。文章为开发者提供了处理类似问题的实用方法。

2501_90323865的博客 91

js十大排序算法

js十大排序算法

weixin_40277684的博客 155

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript排序算法详解

主流排序算法概览名词解释:n: 数据规模 k:“桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额外内存 稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同排序算法实在是博大精深,还有hin多hin多我没有总结到或者我自己还没弄明白的算法,仅仅是总结这十种排序算法都把我写哭了。。。因此,以后如果我掌握了更多的排序姿势,我一定还会回来的!

2301_78835635的博客 334

Camera2Demo

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

JavaScript排序算法专栏(JS十大排序算法详解)

一、冒泡排序 1、Explanation And Steps(解释的步骤) 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。冒泡排序还有一种优化算

smallteddy.blog.youkuaiyun.com 2969

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript排序算法总结

JavaScript实现排序算法 一、大O表示法 大O表示法: 在计算机中采用粗略的度量来描述计算机算法的效率,这种方法被称为“大O”表示法 在数据项个数发生改变时,算法的效率也会跟着改变。所以说算法A比算法B快两倍,这样的比较是没有意义的。 因此我们通常使用算法的速度随着数据量的变化会如何变化的方式来表示算法的效率,大O表示法就是方式之一。 常见的大O表示形式 符号 名称 O(1) 常数 O(log(n)) 对数 O(n) 线性 O(nlog(n))

Ben_Simons 316

用javascript实现各种排序算法

用javascript实现各种排序算法 1.冒泡排序 思路:遍历序列中的所有元素进行两两比较 ① 需要两次循环 ② 外循环表示要遍历的轮数 ③ 内循环表示每一轮要两两比较的次数 <script> var arr = [75,1,2,88,0,-55]; function bubbleSort(arr){ for(var i = 0;i<arr.le...

qq_41564928的博客 237

原生JS排序算法的优化

本博文介绍了一个基础算法:基于JS实现多类型数据排序

代码找天地 813

JS常见的排序算法

这里是修真院前端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能,本篇分享的是: 【JS常见的排序算法 】 大家好,我是IT修真院北京分院第20期的学员王野,一枚正直纯洁善良的程序员 今天给大家分享一下,修真院官网JS任务4,深度思考中的知识点——JS常见的排序算法 一、背景介绍 ...

IT修真院:初学者转行到互联网的聚集地 553

JS实现5种排序算法

1、冒泡排序 人们开始学习排序算法时,通常都先学冒泡算法,因为它在所有排序算法中最简单。然而,从运行时间的角度来看,冒泡排序是最差的一个。 冒泡排序过程:比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。代码实现如下: function bubbleSort(arr){ var len = arr...

狗哥的博客 975

javascript排序算法总结

javascript排序算法总结 这里是对数据结构中的几种算法做一个总结 简单的排序算法有:①冒泡排序 ②选择排序 ③插入排序 高级的排序算法有: ①希尔排序 ②快速排序 一、冒泡排序 如图所示为冒泡排序的步骤 这里冒泡排序的查找的时间复杂度是O(n ^ 2),交换的时间复杂度是O(n^2)。 二、选择排序 如图所示为选择排序的一般步骤 其思路就是找到剩下的元素中最小的一个,然后进行交换,其时间复杂度是O(n ^ 2),比冒泡排序效率高一些 三、插入排序 如图所示下面是插入排序的一般步骤 其基本思路

weixin_47450807的博客 345

使用JavaScript实现排序算法

最近在准备春招面试,远在美国大半个月了一直都没有接到面试电话。很是灰心难过。但是学习还是要继续,生活总是要继续,菜鸟总有一天会高飞呀!不管怎么样,还是学习吧!1. 冒泡排序冒泡排序是我记得最牢的了,可能是因为它的思想最简单,重复走过要排序的序列,一次比较两个元素,如果顺序错误就把它们调整过来(升序)。一直重复工作,知道把最大的元素一步步下沉到数组的尾部function BubbleSort(arr...

LXY224的博客 3517

js常见的几种排序算法

最近自己总结了js常见的几种排序算法,并进行了简单的测试和对比。包括:冒泡排序,插入排序,选择排序,快速排序,归并排序等。 1.冒泡排序: 冒泡排序的原理如同其名,就是先对数组中的n个相邻元素进行两两比较,如果前一个元素大于后一个元素则交换位置知道最后一位。此时在数组最后一位的书必定是最大,然后再对剩余的n-1个元素操作选出第二大的数,以此类推最后得到有序数列。代码如下: function bub...

qq_44291675的博客 3408

js排序的时间复杂度_JavaScript排序算法及性能比较

JavaScript排序算法及性能比较类别: 技术·JS时间:2017-03-13 19:15:30字数:7651版权所有,未经允许,请勿转载,谢谢合作~#### 前言对很多同学来说,启蒙算法应该就是冒泡排序,我们也会见到它解决排序问题,然尔,数据量稍大时,它就显的无力了。前端可能用到算法的机会不算多,但未雨绸缪,不妨从最常用的排序算法说起,[西法](http://www.b...

weixin_32228727的博客 369
上一篇: webpack用法及构建流程
下一篇: 前端性能优化方法
也无风雨丶
博客等级 码龄10年 52粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值