js实现常见排序算法

JavaScript实现常见排序算法:前端开发者必会技能 排序是编程中最基础也是最重要的操作之一。作为前端开发者,虽然现代JavaScript提供了这样的内置方法,但理解底层排序算法的工作原理对于解决复杂问题、优化性能以及应对技术面试都至关重要。冒泡排序选择排序插入排序归并排序快速排序核心概念与联系:用生活实例解释排序算法的基本思想算法原理与实现:每种算法的详细JavaScript实现性能比较:通过实际测试对比不同算法的效率实际应用:排序算法在前端开发中的典型应用场景进阶内容:如何优化排序性能算法复杂度。 阅读详情

1,冒泡排序。
顾名思义,就是从头开始,每两个相邻元素相互比较,把大的放后面,这样子经过一次循环,最大的数就被冒泡到最后面了。下一次循环也是这样,只是需要循环的长度减一(排除最后一个数字)

function bubbleSort(arr){
    var len = arr.length;
    for(var i = 0; i < len; i++){
        for(var j = 0; j < len - 1 - i; j++){
            if(arr[j] > arr[j+1]){
                var tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }
    return arr;
}

2,选择排序。就是每次从头到尾寻找一个最小的数字,把他放到最前面,下一次循环也是这样,循环长度减1(去掉最前面的最小数)

function selectSort(arr){
    var minIndex,len = arr.length;
    for(var i = 0; i < len - 1; i++){
        minIndex = i;
        for(var j = i + 1; j < len; j++){
            if(arr[j] < arr[minIndex]){
                minIndex = j;
            }
        }
        var tmp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = tmp;
    }
    return arr;
}

3,选择排序。就跟打扑克一样,从左到右,每次把当前的数字跟前面的比较,比他小就插到他前面。在代码中就是先用current表示当前数字,跟他前面的数字比较,比他小就把前面的数字往后放一位,这样,就空出来一个位置。当前面的数字比current小,就把current放到空出来的位置。

function insertSort(arr){
    var len = arr.length,
        current;
    for(var i = 1; i < len; i++){
        current = arr[i];
        for(var j = i - 1; j >= 0; j--){
            if(arr[j] > current){
                arr[j+1] = arr[j];
            }else{
                arr[j+1] = current;
                break;
            }
        }
    }
    return arr;
}

4,快速排序,就是选择一个数字,一般选中间的数midValue,数组中比他小的放进left数组,比他大的放在right数组中。递归调用,若是数组长度小于2,直接返回数组。最后将left和midValue和right拼接起来。

function quickSort(arr){
    var len = arr.length;
    if(len < 2){
        return arr;
    }
    var midIndex = Math.floor(len/2);   
    var midValue = arr.splice(midIndex,1);
    var left = [],
        right = [];
    arr.forEach(function(v){
        if(v < midValue){
            left.push(v);
        }else{
            right.push(v);
        }
    });
    return quickSort(left).concat(midValue, quickSort(right));
}
Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案 【代码】Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案。 阅读详情

相关推荐

SQL手工注入及sqlmap注入(文章管理系统实例练习)

sql手工注入及sqlmap注入练习

weixin_53303754的博客 523

js十大排序(简单粗暴法)

网上有许多js的排序算法,其中也有很多写得特别好的,还有配动图,但是对于小白我,有些难以理解,索性,自己讲简单的都归个类。冒泡排序/*1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。 2.第一轮的时候最后一个元素应该是最大的一个。 3.按照步骤一的方法进行相邻两个元素的比较, 这个时候由于最后一个元素已经是最大的了, 所以最后一个元素不用比较。*/ function bubbelSort(

小吴同志的博客 6229

微信小程序 实现拼图功能

微信小程序 实现碎片拼图

weixin_45689786的博客 2250

js几种常见排序方法

下面主要是对冒泡排序、选择排序、快速排序、插入排序的js实现的回顾。 1.  冒泡排序  定义: 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个 数据交换。  这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。  N=N-1,如果N不为0就重复前面二步,否则排序完成。   function bubbleSort(arr){       ...

yijiupingfan0914的博客 1595

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

锂电池寿命预测 | Python实现基于LSTM长短期记忆神经网络的锂电池寿命预测

锂电池寿命预测 | Python实现基于LSTM长短期记忆神经网络的锂电池寿命预测

算法如诗的博客 1902

常见几种排序之javascript实现

各种排序方法都可以用JS实现,这里只是写了几种常见的JS实现,包括冒泡,选择,插入,希尔,归并,快排以及堆排序。还有各排序算法的时间复杂度和空间复杂度。 Algorithm Average Best Worst extra space stable 冒泡排序 O(N^2) O(N) O(N^2) O(1) 稳定 直接插入排序 ...

赵乘风_i 1323

如何在 R 中使用 Gamma 分布(附示例)

在统计学中,伽马分布通常用于模拟与等待时间相关的概率。我们可以使用以下函数来处理 R 中的 gamma 分布:dgamma(x, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的密度函数值。 pgamma(q, shape, rate) – 找到具有特定形状和速率参数的伽马分布的累积密度函数值。 qgamma(p, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的逆累积密度函数值。 rgamma(n, shape, rate) – 生成 n 个随机

Mrrunsen的博客 4418

JS几种排序的实现

1、选择排序 设置两个指针i和j,j永远在i之前,进行遍历时,如果j小于i,则进行交换,直到j遍历结束,然后i++,重复上述操作,直到i遍历结束。时间复杂度为O(n2) var arr = [1, 3, 5, 2 ,4]; //选择排序 function sort() { var temp; for(var i=0;i<arr.length-1;i++){ f...

独酌101112的博客 214

YOLOv12改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov12精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 684

RK3568下MIPI屏幕调试技巧

通过合理配置设备树节点、精确计算像素时钟并完成编译烧录,可高效实现RK3568平台MIPI屏幕的点亮与显示调试。关键在于严格遵循屏幕规格书参数,结合内核日志定位问题,逐步优化时序配置。掌握这一流程后,开发者可快速适配不同分辨率、刷新率的MIPI屏幕,为嵌入式系统显示模块开发奠定基础。如果在调试中遇到特定问题(如驱动匹配失败、时钟计算误差),建议优先查阅屏幕规格书和RK3568芯片手册,或通过内核社区(如Linux-DRI邮件列表)获取支持。

文石_2009的博客 1205

常见排序算法的js实现

常见排序算法的js实现 冒泡排序 <script type="text/javascript"> var a = [9, 6, 7, 67, 8]; for(var i = 0;i < a.length - 1;i++) { for (var j = 0;j < a.length - 1-i;j++){ if (a[j] > a[j+1]){ var temp = a[j]; a[j] = a[j+1]; a[j+1] = t

c_jin_的博客 225

【Python办公】剪贴板记录工具(记录文本 + 图片防重复)

本文介绍了一个用Python开发的剪贴板记录工具,能够自动记录复制过的文本和图片内容。该工具使用tkinter构建GUI界面,通过后台线程实时监控剪贴板变化,具有文本记录、图片保存(自动去重)功能。核心代码采用pyperclip访问剪贴板,PIL处理图片,hashlib计算图片哈希值实现去重。运行程序后,文本内容直接显示在界面,图片保存为PNG文件并记录路径。工具还提供清空历史记录功能,适合日常办公中需要追踪剪贴板历史的使用场景。

weixin_42636075的博客 240

JavaScript实现常见简单排序算法

JavaScript实现常见简单排序算法(冒泡排序,快速排序,直接插入排序,选择排序) 冒泡排序 排序思想 数组相邻两项进行比较,如果前一项比后一项大则交换位置,比较arr.length-1轮,每一轮把最大的一项放最后。 对除了最后一项之外的其它项重复第一步,直到只剩一项。 动图演示 时间复杂度及空间复杂度 最好情况下时间复杂度:O(n) 最坏情况下时间复杂度:O(n²) 平均时间复杂度:O...

越界的博客 431

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JS实现常见的五种排序算法

排序算法可以通过优化数据的排列方式,提升效率。下文我将用JS实现常见的五种排序算法。

2501_92078506的博客 838

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用 JavaScript 实现几种常见排序算法

使用JavaScript实现冒泡排序、选择排序、插入排序、快速排序、归并排序的排序算法

2403_84691304的博客 1019

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

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

Javascript实现常见排序算法

Javascript写了几个常见排序算法,算是回忆一下基本的算法,工作中用的很少了,都习惯类用现成的类库。 quick_sort2是网上实现的版本,我的quick_sort是看优酷的视频写的,老外还蛮有意思的,跳舞来解释算法。有兴趣的同学可以看看下面的视频:舞动的排序算法 我写的快速排序用递归的,用firefox,100万能排,但用其他浏览器就栈溢出了,不知道怎么能改进下。 js内置的排...

iteye_6700的博客 199

常见排序算法的Javascript实现

近日准备实习面试,以下是常见排序算法JS实现,转载备用。原文链接 JavaScript实现排序算法冒泡排序冒泡排序的基本思想是从头遍历要排序的数组,比较相邻两个数,如果前面位置的数大于后面位置的数,那么就将两者进行交换,否则不做任何操作。遍历完一次之后,最大的数就放到了数组最后的位置。然后再从头遍历数组,进行同样的操作,就可以将第二大的数放到倒数第二个位置,依此进行下去,直到所有数都排好位置为止。冒

王浴昊 1096

用js实现常见排序算法

以下是几种常见排序算法的 JS实现,包括选择排序、冒泡排序、插入排序、快速排序和归并排序,以及每种算法的特点和复杂度分析。,其底层基于优化的快速排序或归并排序,时间复杂度为 O(n log n)。:每次从未排序部分选择最小元素,与未排序部分的第一个元素交换。:多次遍历数组,比较相邻元素并交换,将最大元素“冒泡”到末尾。:分治法,选择基准值,将数组分为两部分,递归排序。:分治法,将数组分成两半,分别排序后合并。:将未排序数据插入已排序序列的合适位置。:为避免修改原数组,传入排序函数前使用。

weixin_51762789的博客 736

常见排序算法-JS实现

常见排序算法-JS 冒泡排序 特点 两两比较 比较:N^2 / 2约等于 时间复杂度O(N^2) 交换:假设比较两次交换一次,N^2 / 4 约等于 时间复杂度O(N^2) 选择排序 特点 每轮排序选出一个最小或最大的元素再一个个插入数组 比较:N^2 / 2 时间复杂度O(N^2) 交换:N-1 时间复杂度O(N) 所以选择排序效率上是优于冒泡排序的 插入排序 特点 从未排序元素中挑出一个元素挨个跟局部有序的元素进行比较,找到对应位置插入即可 比较次数 :平均 N(N-1

qq_33811654的博客 286

常见的几种数组排序算法JS实现

常见的几种数组排序算法JS实现 网上找到一些算法思想,然后自己用JS表现出来(小菜一只,大神勿喷) 思想到是很简单,打代码,调试代码,细节可以让人抓狂,好了不说了,下面是我的劳动成果 常见的排序算法思想 快速排序  从给定的数据中,随机抽出一项,这项的左边放所有比它小的,右边放比它大的,然后再分别这两边执行上述操作,采用的是递归的思想,总结出来就是 实现一层,分别给两边递归,设置好出口...

260

JavaScript 实现四种常见排序算法

介绍4种常见排序算法,将 JavaScript 的实现过程做一个分享:冒泡排序、选择排序、插入排序、快速排序。 此处首先定义一个 swap 函数,实现了数组中元素调换的功能,在后面的排序算法都是直接调用这个函数的~ //将数组 arr 中下标为 i 和 j 调换位置 function swap(arr, i, j) { var temp = arr[j]; arr[j] = a...

zwkkkk1的博客 557

JavaScript实现常见排序算法

快速排序 快速排序用了分治思想 分治思想: (1)找出简单的基线条件 (2)确定如何缩小问题的规模,使其符合基线条件 快速排序步骤: 基线条件:当数组长度小于2时候不用排序,直接返回数组 缩小问题规模: 选择基准值 将数组分成两个子数组:小于基准值的元素和大于基准值的元素 对这两个子数组进行快速排序 代码实现: function quicksort(arr) { if(arr.length < 2){ return arr }else{

凌霄之外的博客 210

javascript实现7种常见的排序算法

冒泡 var arr = [45, 11, 51, 100, 68, 72, 97]; function maopao(arr) { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length - i; j++) { if (arr[j] > arr[j + 1]) { let temp = arr[j + 1]; arr[j + 1] = arr[j

王源偷我华子 358

常见排序算法的JavaScript实现

常见排序算法的JavaScript实现才疏学浅,仅供学习交流~//测试用例 //var arr=[9,1,5,8,3,7,4,6,2]; var arr=[50,10,90,30,70,40,80,60,20]; var arr1=insertionSort(arr); //var arr2=banaryInsertionSort(arr); //var arr3=shellSort(arr); /

神级修炼~ 494

AI影片生产系统:可复用、可迭代的全流程工作流设计

AI影片制作并非简单调用生成模型,而是围绕长程一致性、风格统一性与工程可控性构建的技术体系。其核心原理在于将传统影视工业链路(编剧→分镜→美术→剪辑→输出)转化为AI可执行的结构化中间态,通过文本层标签化脚本、图像层种子矩阵、序列层帧级缝合与合成层专业软件协同,系统性对抗AI固有的随机性与衰减性。该方案显著提升批量内容生产的确定性与可维护性,广泛适用于数字人文短片、品牌广告、教育视频等需多镜头连贯叙事的场景,尤其适合追求稳定交付与团队协作的创意技术团队。

weixin_33892359的博客 331
上一篇: 解决git push 需要输入帐号密码
下一篇: postMessage 跨文档消息传递
linjiaqin1995
博客等级 码龄9年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值