登录
首页 >  文章 >  前端

JavaScript排序与搜索算法详解

时间:2026-05-28 11:14:53 293浏览 收藏

推广推荐
下载万磁搜索绿色版 ➜
支持 PC / 移动端,安全直达
本文深入浅出地讲解了JavaScript中五大经典排序算法(冒泡、选择、插入、快速、归并)及对应搜索思想的实现原理与代码,不仅清晰对比了各算法的时间复杂度、核心逻辑和适用场景,还通过简洁可运行的ES6代码展示了如何在实际开发中灵活运用这些基础但至关重要的算法——无论你是算法初学者夯实根基,还是前端开发者优化数据处理性能,都能从中获得即学即用的实用价值。

JavaScript算法实现_排序与搜索算法

排序与搜索是算法中最基础也最常用的部分。JavaScript 作为一门灵活的编程语言,可以轻松实现各种经典排序和搜索算法。下面介绍几种常见的排序与搜索算法及其 JavaScript 实现。

常见排序算法实现

1. 冒泡排序(Bubble Sort)

冒泡排序通过重复遍历数组,比较相邻元素并交换位置,将最大值“冒泡”到末尾。

function bubbleSort(arr) {
  const len = arr.length;
  for (let i = 0; i  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 

3. 插入排序(Insertion Sort)

将每个元素插入到前面已排序部分的正确位置。

function insertionSort(arr) {
  for (let i = 1; i = 0 && arr[j] > current) {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = current;
  }
  return arr;
}

4. 快速排序(Quick Sort)

采用分治法,选择一个基准值,将数组分为小于和大于基准的两部分,递归排序。

function quickSort(arr) {
  if (arr.length  x  x === pivot);
  const right = arr.filter(x => x > pivot);
  return [...quickSort(left), ...middle, ...quickSort(right)];
}

5. 归并排序(Merge Sort)

将数组不断二分,直到单个元素,再合并有序子数组。

function mergeSort(arr) {
  if (arr.length const mid = Math.floor(arr.length / 2);
const left = mergeSort(arr.slice(0, mid));
const right = mergeSort(arr.slice(mid));<p>return merge(left, right);
}</p><p>function merge(left, right) {
let result = [];
let i = 0, j = 0;
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)).concat(right.slice(j));
}</p>

常见搜索算法实现

1. 线性搜索(Linear Search)

从头开始逐个检查元素,直到找到目标值。

function linearSearch(arr, target) {
  for (let i = 0; i 

2. 二分搜索(Binary Search)

适用于已排序数组,通过不断缩小搜索范围,提高效率。

function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;
  while (left 

使用建议与性能对比

不同算法在时间复杂度上有明显差异:

  • 冒泡、选择、插入排序:平均时间复杂度 O(n²),适合小数据集
  • 快速排序:平均 O(n log n),实际应用广泛
  • 归并排序:稳定 O(n log n),适合需要稳定排序的场景
  • 线性搜索:O(n),通用但效率低
  • 二分搜索:O(log n),要求数据有序

在实际开发中,虽然 JavaScript 提供了 Array.prototype.sort()indexOf() 等内置方法,理解底层原理有助于优化性能和处理特殊需求。

基本上就这些。掌握这些基础算法,能为更复杂的逻辑打下坚实基础。

今天关于《JavaScript排序与搜索算法详解》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>