冒泡排序通过相邻元素比较交换实现O(n²)排序;2. 快速排序采用分治法以O(n log n)平均复杂度高效排序;3. 二分搜索在有序数组中以O(log n)时间查找目标值。

在前端开发中,J*aScript 不仅用于交互逻辑,也常用来处理数据。排序和搜索是数据处理中最常见的操作。虽然 J*aScript 内置了 sort() 方法,但在某些场景下,我们需要自定义算法来提升性能或满足特定需求。下面介绍几种常用的排序与搜索算法的 J*aScript 实现。
以下是几种基础但高效的排序算法,适合理解原理并在特定场景使用。
1. 冒泡排序(Bubble Sort)
冒泡排序通过重复比较相邻元素并交换位置,将最大值“浮”到末尾。虽然效率不高(O(n²)),但易于理解。
function bubbleSort(arr) {
const len = arr.length;
for (let i = 0; i < len; 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]]; // ES6 解构交换
}
}
}
return arr;
}
2. 快速排序(Quick Sort)
快速排序采用分治法,选择一个基准值(pivot),将数组分为小于和大于基准的两部分,递归排序。平均时间复杂度为 O(n log n),是实际应用中较快的算法。
function quickSort(arr) {
if (arr.length <= 1) return arr;
<p>const pivot = arr[Math.floor(arr.length / 2)];
const left = [];
const middle = [];
const right = [];</p><p>for (let val of arr) {
if (val < pivot) left.push(val);
else if (val > pivot) right.push(val);
else middle.push(val);
}</p><p>return [...quickSort(left), ...middle, ...quickSort(right)];
}
3. 归并排序(Merge Sort)
归并排序也是基于分治策略,将数组不断二分,再合并已排序的子数组。稳定且时间复杂度始终为 O(n log n),适合大数据量。
List.js一个能够实现搜索、 排序、 筛选器的J*aScript插件
List.js是一个支持多种浏览器,不依赖于任何框架的J*aScript包用于改进现有HTML列表元素的功能
25
查看详情
function mergeSort(arr) {
if (arr.length <= 1) return arr;
<p>const mid = Math.floor(arr.length / 2);
const left = mergeSort(arr.slice(0, mid));
const right = mergeSort(arr.slice(mid));</p><p>return merge(left, right);
}</p><p>function merge(left, right) {
let result = [];
let i = 0, j = 0;</p><p>while (i < left.length && j < right.length) {
if (left[i] <= right[j]) {
result.push(left[i++]);
} else {
result.push(right[j++]);
}
}</p><p>return result.concat(left.slice(i)).concat(right.slice(j));
}
搜索算法帮助我们在数据集中查找目标值。根据数据是否有序,可选择不同策略。
1. 线性搜索(Linear Search)
适用于无序数组,逐个遍历直到找到目标。时间复杂度为 O(n)。
function linearSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) return i;
}
return -1; // 未找到
}
2. 二分搜索(Binary Search)
要求数组已排序。通过不断缩小搜索范围,每次比较中间值,时间复杂度为 O(log n),效率高。
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
<p>while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
else
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}</p><p>return -1; // 未找到
}
虽然可以手写这些算法,但在日常开发中需要注意:
(a, b) => a - b
基本上就这些。掌握这些基础算法,不仅能应对面试,也能在需要时写出更可控、高效的代码。
以上就是J*aScript算法实现_排序与搜索的详细内容,更多请关注其它相关文章!
# 是一个
# 做网站建设工程
# 泸州营销推广找谁
# 霍山荆门整合营销推广
# 咸阳网站建设广告公司
# 网站优化分几步做好
# 桂林互联网网络推广营销模式
# 2019年5g元年营销推广
# app在应用市场上营销推广
# 人人网推广营销方法
# 市场营销推广线下渠道
# 有哪些
# 治法
# 解决了
# 排序算法
# 未找到
# 什么问题
# 几种
# 但在
# 如何实现
# 递归
# 冒泡排序
# 前端开发
# 前端
# java
# es6
# javascript
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案
Symfony路由参数转换器:实体存在性验证与错误处理策略
Google Cloud Functions 时区处理指南:理解与最佳实践
poki官网最新入口 poki小游戏大全入口
Coolpad5890 ROM刷机包
composer licenses 命令:如何检查项目依赖的许可证?
美发店速赢秘籍
Cassandra中复合主键、二级索引与ORDER BY排序的限制与解决方案
在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明
Chart.js 教程:自定义插件实现图表与图例间距调整
学习通网页版课程打不开_课程无法访问时的解决方法
《火花chat》搜索好友方法
申通快递查询 申通物流快递单实时查询入口
Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型
飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读
我的世界游戏平台入口 我的世界官方官网直达链接
猫眼电影app如何参与官方的抽奖活动_猫眼电影官方抽奖参与方法
汽车之家网页版免费登录_汽车之家官网首页直接进入
Highcharts雷达图轴线交点数值标注指南
mysql如何配置从库只读_mysql从库只读设置方法
苹果iPhone14ProMax如何新建AppleID_iPhone14ProMax新建AppleID具体流程
qq邮箱怎么注册_QQ邮箱注册步骤与注意事项
Golang如何使用log记录日志信息_Golang log日志记录方法总结
Python定时发送QQ消息
《全民k歌》网页版最新登录入口一览
MacBook Pro词典使用指南
C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用
小红书网页版首页入口 小红书网页版电脑端官方登录链接
小米civi如何设置锁屏时间
AO3中文版手机快速通道_AO3最新稳定链接更新
Safari浏览器自动填表功能失效怎么办 Safari表单管理修复
解决PHP MySQL数据库更新无响应:SQL查询语法错误解析
PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角
优化Leaflet弹出层图片显示:条件渲染策略
不吃碳水化合物是健康减肥的好办法吗
PHP与SQL实践:高效实现数据复制与特定列值修改
《波斯王子:失落的王冠》剑术大师打法攻略
解决异步Python机器人中同步操作的阻塞问题
win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】
PHP odbc_fetch_array 返回值处理:如何正确访问嵌套数组元素
百度浏览器无法安装扩展程序_百度浏览器插件安装失败原因解析
OTT月报 | 2025年9月智能电视大数据报告
怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】
如何发挥新媒体矩阵作用?新媒体矩阵怎么搭建?
CSS如何在页面中引入重置样式_使用Normalize.css或Reset.css统一浏览器默认样式
顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南
PDF如何批量加注释_PDF多文件批注高亮操作教程
t3出行如何使用微信支付
快递物流路径揭秘
如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧
2025-11-23
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。