前端五种排序

3种常见的Web前端数组排序方式! 前端面试中几种常见的数组排序方式:冒泡排序、插入排序、选择排序,你知道他们的基本思想是哪些,应该如何实现吗?今天小千就来给大家详解一下,赶紧戳过来~~ 冒泡排序 冒泡排序的基本思路是什么? 两两比较顺序,如果顺序错误则交换位置 插入排序 插入排序的基本思路是什么? 第一步:从第二位(当前元素)开始从后向前查找; 第二步:若新元素(当前元素的前面)大于当前元素,将新元素移到下一位置; 第三步:重复2,直到在有序区找到大于或等于新元素的位置; 第四步:将当前元素插到上面找到的位置; 第五步:重复2~4; 阅读详情

1. 冒泡排序 (Bubble Sort)

冒泡排序是一种简单的排序算法,它重复地遍历待排序的数组,比较相邻元素并交换顺序错误的元素。每次遍历后,最大的元素“冒泡”到数组的末尾。
function bubbleSort(arr) {
	const len = arr.length;
	for (let i = 0; i < len - 1; i++) {
		 for (let j = 0; j < len - 1 - i; j++) {
		 	if (arr[j] > arr[j + 1]) {
		 		// 交换                
		 		[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
		 	}
		 }
	}
	return arr;
}

2. 选择排序 (Selection Sort)

选择排序是一种简单直观的排序算法。它的基本思想是每一轮从未排序部分选择最小或最大的元素,将其放到已排序部分的末尾。
function selectionSort(arr) {    
	const len = arr.length;    
	for (let i = 0; i < len - 1; i++) {        
		let minIndex = i;       
		for (let j = i + 1; j < len; j++) {            
			if (arr[j] < arr[minIndex]) {                
				minIndex = j;            
			}        
		}        
		// 交换        
		[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];    
	}    
	return arr;
}

3. 插入排序 (Insertion Sort)

插入排序是一种简单且有效的排序算法。它通过构建一个有序子序列,将未排序元素逐一插入到该序列中。
function insertionSort(arr) {    
	const len = arr.length;    
	for (let i = 1; i < len; i++) {        
		const key = arr[i];        
		let j = i - 1;        	
		while (j >= 0 && arr[j] > key) {            
			arr[j + 1] = arr[j];            
			j--;        
		}        
		arr[j + 1] = key;    
	}    
	return arr;
}

4. 快速排序 (Quick Sort)

快速排序是一种高效的排序算法,采用分治法策略。它通过选取一个“基准”元素,将数组分为两个部分,一部分比基准小,另一部分比基准大,然后递归排序这两个部分。
function quickSort(arr) {    
	if (arr.length <= 1) return arr;        
	const pivot = arr[arr.length - 1];    
	const left = [];    
	const right = [];        
		for (let i = 0; i < arr.length - 1; i++) {        
			if (arr[i] < pivot) {            
				left.push(arr[i]);        
			} else {            
				right.push(arr[i]);        
			}    
		}        
	return [...quickSort(left), pivot, ...quickSort(right)];

}

5. 归并排序 (Merge Sort)

归并排序是一种利用分治法的排序算法。它将数组分成两半,分别对这两半进行排序,然后将排序后的两半合并在一起。
function mergeSort(arr) {    
	if (arr.length <= 1) return arr;    
	const mid = Math.floor(arr.length / 2);    
	const left = mergeSort(arr.slice(0, mid));    
	const right = mergeSort(arr.slice(mid));        
	return merge(left, right);
}
function merge(left, right) {    
	const result = [];    
	let i = 0, j = 0;    
	while (i < left.length && j < right.length) {        
		if (left[i] < right[j]) {            
			result.push(left[i]);            
			i++;        
		} else {            
			result.push(right[j]);            
			j++;        
		}    
	}    
	return result.concat(left.slice(i)).concat(right.slice(j));
}
前端十种排序算法解析 排序算法 时间复杂度(平均) 空间复杂度 稳定性冒泡排序 O(n²) O(1) 稳定选择排序 O(n²) O(1) 不稳定归并排序 O(n log n) O(n) 稳定快速排序 O(n log n) O(log n) 不稳定插入排序 O(n²) O(1) 稳定希尔排序 O(n log n) O(1) 不稳定基数排序 O(nk) O(n + k) 稳定计数排序 O(n + k) O(k) 稳定桶排序 O(n + k) O(n + k) 稳定。 阅读详情

相关推荐

帆软报表排序全链路:从SQL ORDER BY到点击表头交互

在数据展示与报表开发中,排序决定了信息呈现的可读性与分析效率。其原理是让数据库或报表引擎按指定字段与方向组织记录,既可在SQL层通过ORDER BY完成,也可在报表层借助单元格、分组或交互事件实现。合理的排序策略能降低大数据量下的内存消耗、提升分页与汇总查询响应,并保障前端点击表头、动态参数切换等场景的一致性。常见应用包括销售明细、财务汇总、看板自助分析等。围绕帆软报表中SQL排序、参数化动态排序与点击表头排序的选择,需要理解数据流层级与性能边界,才能避开分页错乱、字符串排序、合并单元格冲突等工程问题。

weixin_32342535的博客 258

前端JS算法之数组排序

数组排序一直是前端面试中经常出现的问题,而大家可能经常用的就是sort排序,所以我又总结两种排序方式,加上sort排序,一并写了下来。 第一种方法:冒泡排序 逻辑步骤: 1、使用双层for循环加if判断 2、依次拿数组里面的一项去跟数组里面的每一项做比较运算,符合判断条件的,交换两项的位置。 let arr = [9, 5, 1, 4, 8, 6, 2, 7, 3, 0, '2', '3']; function sorting(a) { // 判断数组是否存在,如果存在就获得数组长度 var a.

arvin的博客 3590

沐数科技数据开发岗笔试题2025

与数据库中的主键(Primary Key)​有所不同,业务主键(Business Key)​是业务层面的唯一标识,通常由业务规则决定,例如,订单号、订单明细号,身份证号等。用户授信表(table_credit):包含用户ID(uid)、授信申请时间(credit_submit_time_local)、授信状态(credit_status)。:在正态分布中,大约68%的数据值落在距离均值一个标准差的范围内,约95%的数据值落在两个标准差的范围内,而约99.7%的数据值落在三个标准差的范围内。

weixin_40121264的博客 3525

前端必备的几种数组排序和去重的方法

前端开发避免不了对各种数据类型的处理,其中数组的排序和去重是必备的技能,往往面试时也也会经常遇到。 数组排序: 1.简单的sort排序: var arr=[1,5,3,87,23]; arr.sort(function(a,b){ return a-b; }) console.log(arr)//输出:[1,23,3,5,87] 注:若返回b-a可获得从大到小的排序; 数组的sort方法只能实...

weixin_45393981的博客 4332

USB2.0物理层实战:手把手教你用示波器抓取D+/D-信号(附波形分析)

本文是一份针对硬件工程师的USB2.0物理层信号调试实战指南。文章详细讲解了如何使用示波器捕获和分析D+/D-差分信号,从基础设置、核心信号状态解读,到信号完整性分析与常见问题排查,手把手教你定位USB通信故障。内容涵盖USB2.0协议物理层关键概念,并附有基础解码思路,旨在提升工程师的底层调试能力。

s8t9u0v1w的博客 452

SpringCloud2025+SpringBoot3.5.0+gateway+webflux子服务路由报503

本来昨天就应该也记录下,免得忘记的,但是有点晚了,酒没写,真的是被坑惨了。当然这也是追求最新的代价,也是对新技术、老知识点的重温。依赖更粒度让架构的知识面更高,需要非常清楚另外说不定是有新的负载均衡要出现了,就想当初loadbalancer取代Ribbon一样好了,真是坑了半夜,昨晚都没有写,今天才复盘,希望能帮到大家,让更多在坑里的技术人爬出来。

zwrlj527的专栏 1998

前端必须掌握的五种排序算法,你会几种?

在前端开发中,对数据进行排序是一项基本且常见的任务。掌握排序算法不仅可以帮助我们更有效地处理数据,还能提升代码的执行效率。冒泡排序、选择排序、插入排序、快速排序和归并排序。通过理解这些算法的原理和逻辑,我们可以更好地选择合适的排序方法来优化应用性能。正文开始💖💖💖。

前端探索者 3753

Jetson AGX Orin到手必看:DP线选错黑屏、SSD不识别?这篇避坑指南帮你一次搞定

本文详细介绍了Jetson AGX Orin开发套件的硬件避坑指南,涵盖开箱检查、DP线选择、SSD兼容性等关键问题。通过实测数据和实用技巧,帮助开发者避免黑屏、存储不识别等常见问题,提升开发效率。特别推荐符合VESA认证的DP 1.4a线缆和兼容性优秀的SSD型号,确保设备稳定运行。

weixin_33696822的博客 434

前端的五种排序算法

在前端开发中,对数据进行排序是一项基本且常见的任务。掌握排序算法不仅可以帮助我们更有效地处理数据,还能提升代码的执行效率。冒泡排序、选择排序、插入排序、快速排序和归并排序。通过理解这些算法的原理和逻辑,我们可以更好地选择合适的排序方法来优化应用性能。1.冒泡排序冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。比较相邻的两个元素,如果第一个比第二个大,就交换它们两个;

m0_70547044的博客 1238

STM32F407通过SMBus协议精准读取BQ40Z50电池电量

本文详细介绍了STM32F407通过SMBus协议精准读取BQ40Z50电池电量的实现方法。从硬件连接到软件驱动开发,再到通信异常排查,提供了完整的解决方案。重点解析了SMBus协议的特殊时序要求、GPIO模拟驱动的关键代码,以及实际调试中的常见问题与对策,帮助开发者高效完成电池管理系统开发。

weixin_29189003的博客 253

【CAD】【手把手带你写一个DXF&JAVA解析框架】02——整理DXF元数据实体类,涵盖重要属性与对照组码

本文系统梳理了DXF文件解析中的核心元数据类,重点分析了Tables段(图层、块记录)、Blocks段和Entities段的关键数据结构。通过详细的组码说明和对照代码实现,阐述了图层定义(DXFLayer)、块记录(DXFBlockRecord)、应用程序标识(DXFAppId)等表对象的属性构成;同时解析了直线(DXFLine)、多段线(DXFLwPolyLine)、圆弧(DXFArc)、文字(DXFText)等实体类的几何特征与属性定义。文章还构建了顶点(Vertex)、基类(DXFEntity、DXF

Wonder ZH 270

AI生成-前端排序算法

前端排序算法

前端攻城狮的博客 1046

YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进)

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 2311

java+归并排序的优点_前端学数据结构与算法(九):常见五种排序算法的实现及其优缺点...

前言数据结构章节暂时告一段落,从这一章节开始算法之旅。首先从排序开始,排序作为最基础的算法,一点也不简单,写一个快排、堆排、归并排序在大厂面试中并不罕见,或者某些题目就需要使用某些排序的思想来解决,这也就是为什么要学习排序。当然最重要的是学习它的思想,例如快排的partition操作,快排和归并排序的分治思想,以及排序的性能优化,又或者O(n²)的排序也并非一无是处等。本章将手写五种常见排序算法,...

weixin_28700593的博客 988

DAVIS前言:事件相机资料调研

Event-Camera 资料集锦 1. 官网资料 假设了你买了事件相机,就可以在以下几个链接了解相关的参数和gui界面安装,如果不喜欢gui界面安装,可以第2节,安装相关的源码驱动。 DVS/DAVIS产品说明 等相关产品的软硬件介绍。 iniVation DV教程文档 给出在不同平台下的dvs-gui界面,可按照其说明进行相应的操作。 另外,Neuromorphic vision com...

Ian的博客 4507

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

前端必备排序算法

** 前端必备排序算法 ** 冒泡排序 const arr = [22,12,4,45,3,87,77,43,55,42]; function bubbleSort(arr) { 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]){ swap(arr,j);

sy_yan的博客 150

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

归并排序执行次数_前端学数据结构与算法(九):常见五种排序算法的实现及其优缺点...

前言数据结构章节暂时告一段落,从这一章节开始算法之旅。首先从排序开始,排序作为最基础的算法,一点也不简单,写一个快排、堆排、归并排序在大厂面试中并不罕见,或者某些题目就需要使用某些排序的思想来解决,这也就是为什么要学习排序。当然最重要的是学习它的思想,例如快排的partition操作,快排和归并排序的分治思想,以及排序的性能优化,又或者O(n²)的排序也并非一无是处等。本章将手写五种常见排序算法,...

weixin_39633891的博客 260

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

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

前端常用的排序算法

冒泡排序 方法: 比较相邻两个数据的大小,将大的数据换到右边或者左边,这样将每一轮最大的值放在一端.时间复杂度为n²;该方法有两层for循环,一次数据交换;第一层是确定需要冒泡的次数;第二层循环是确定需要对比的次数; 题外话: 脑袋里有个游戏场景还原这个算法. 假如这些需要比较的数字排成一列. 现在要对它进行排序,我们要做的就是拿着第一个数字与其他的数字进行比较,如果比自己手上拿的数字大,就拿上大的,留下小的,继续往前走,直到上次比较完最末的位置; 走完一轮继续下一轮,直到当前位置等于上次比较完的最末的

weixin_42011096的博客 326

JavaScript常用的5种排序算法,你都掌握了吗?

今天给大家带来5种最常见的前端排序算法,注释非常详细,欢迎讨论~

有事儿私信。 2137

几种常见的排序算法(js)

几种常见的算法: 前端面视常问的几种排序算法:冒泡,选择,插入,快排,二分搜索;除此之外还有归并排序,堆排序等,本文主要对前五种排序算法进行详解。 1.冒泡排序 2.插入排序 3.选择排序 4.快速排序 5.二分搜索 ...

qq_51212018的博客 338

学习JavaScript算法(一)排序算法

前端攻城狮——学习常用的排序算法一、冒泡排序优点:所有排序中最简单的,易于理解;缺点:时间复杂度O(n^2),平均来说是最差的一种排序方式;因为在默认情况下,对于已经排好序的部分,此排序任然会进行比较(当然可以进行改进优化)算法步骤:比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对一直到结尾的最后一对,如此将最大的数放在后面。对所有的元素重复以上的步...

keywords 299

JavaScript 排序算法实战指南:从基础到高级

排序是前端开发中最常见的操作之一。无论是用户列表、商品价格还是文章日期,都需要高效的排序算法来处理。本文将深入解析五种核心排序算法,从原理到实践,帮你全面掌握这一必备技能。

weixin_54447959的博客 646

CSS列表(有序,无序,去掉无序列表的点,前端岗面试12家大厂成功跳槽

大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】一个人可以走的很快,但一群人才能走的更远。

2301_82241647的博客 1008

【JavaScript】常见排序算法实现

本文介绍了五种经典排序算法的JavaScript实现。冒泡排序通过相邻元素比较交换实现排序(O(N²));选择排序每次选择最小元素交换位置(O(N²));插入排序将无序元素插入有序部分(O(N²));归并排序采用分治策略递归排序后合并(O(N log N));快速排序通过分区函数确定轴值位置并递归处理(平均O(N log N))。每种算法均附有实现代码和思路说明。

多言数穷,不如守中。十语九中,未必称奇;一语未中,愆尤骈集。 371

用Vue3 refs快速验证UI交互原型的5种方法

创建一个简单的modal组件,使用ref绑定模态框元素,然后通过v-if或v-show指令控制其显示状态。首先,创建一个可拖拽的列表,通过ref绑定DOM元素,然后利用HTML5的拖拽API实现排序功能。Vue3的refs特性为我们提供了一种轻量级的方式,可以在不需要完整项目结构的情况下,快速构建和测试各种前端交互效果。通过ref绑定需要动画的元素,然后使用Vue的transition组件和CSS过渡类名来实现各种动画效果。这种方法不需要额外的动画库,却能实现复杂的过渡效果,非常适合原型开发。

SnowflakeJaguar14的博客 414

5 个 JS 数组技巧可提高你的开发技能|诺禾

在前端开发中,数组是经常会被用到的数组结构,今天,介绍 5 个处理数组技巧,希望能带给你们一些 启发和帮助。废话不多说,让我们开始吧。 随机排列 在开发者,有时候我们需要对数组的顺序进行重新的洗牌。在 JS 中并没有提供数组随机排序的方法,这里提供一个随机排序的方法: function shuffle(arr) { var i, j, temp; for (i = arr.length - 1; i > 0; i–) { j = Math.floor(Math.random() * (i + 1)

yyone123的博客 165
上一篇: TypeScript 类型断言
下一篇: 循环遍历把多维数组中的某个值改成需要的值
everyStudy
博客等级 码龄4年 292粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值