当前位置:首页 > JavaScript

用js来实现所有算法

2026-04-04 21:38:46JavaScript

使用JavaScript实现所有算法是一个庞大的任务,因为算法覆盖的范围极广,从基础排序到复杂机器学习算法均可涉及。以下是常见算法分类及部分核心实现示例:

排序算法

快速排序

function quickSort(arr) {
  if (arr.length <= 1) return arr;
  const pivot = arr[0];
  const left = [];
  const right = [];
  for (let i = 1; i < arr.length; i++) {
    arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
  }
  return [...quickSort(left), pivot, ...quickSort(right)];
}

归并排序

用js来实现所有算法

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) {
  let result = [];
  while (left.length && right.length) {
    left[0] < right[0] ? result.push(left.shift()) : result.push(right.shift());
  }
  return [...result, ...left, ...right];
}

搜索算法

二分查找

function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    if (arr[mid] === target) return mid;
    arr[mid] < target ? left = mid + 1 : right = mid - 1;
  }
  return -1;
}

图算法

Dijkstra最短路径

用js来实现所有算法

function dijkstra(graph, start) {
  const distances = {};
  const visited = new Set();
  Object.keys(graph).forEach(node => distances[node] = Infinity);
  distances[start] = 0;

  while (true) {
    let closestNode = null;
    Object.keys(distances).forEach(node => {
      if (!visited.has(node) && (closestNode === null || distances[node] < distances[closestNode])) {
        closestNode = node;
      }
    });

    if (closestNode === null) break;
    visited.add(closestNode);
    Object.keys(graph[closestNode]).forEach(neighbor => {
      const newDistance = distances[closestNode] + graph[closestNode][neighbor];
      if (newDistance < distances[neighbor]) distances[neighbor] = newDistance;
    });
  }
  return distances;
}

动态规划

斐波那契数列(带缓存)

function fibonacci(n, memo = {}) {
  if (n in memo) return memo[n];
  if (n <= 2) return 1;
  memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
  return memo[n];
}

机器学习基础

线性回归梯度下降

function gradientDescent(X, y, learningRate = 0.01, epochs = 1000) {
  let m = X.length;
  let theta0 = 0, theta1 = 0;

  for (let epoch = 0; epoch < epochs; epoch++) {
    let temp0 = 0, temp1 = 0;
    for (let i = 0; i < m; i++) {
      const error = (theta0 + theta1 * X[i]) - y[i];
      temp0 += error;
      temp1 += error * X[i];
    }
    theta0 -= (learningRate * temp0) / m;
    theta1 -= (learningRate * temp1) / m;
  }
  return [theta0, theta1];
}

注意事项

  • 性能敏感场景需优化实现(如使用尾递归优化)
  • 大数据集处理应考虑内存限制
  • 部分复杂算法(如FFT、密码学算法)建议使用现成库(如crypto-js)

完整实现所有算法需参考专业资源如《算法导论》或开源项目(如github.com/trekhleb/javascript-algorithms)。

标签: 来实现算法
分享给朋友:

相关文章

js实现基数算法

js实现基数算法

基数排序(Radix Sort)简介 基数排序是一种非比较型整数排序算法,通过逐位分配和收集实现排序。适用于整数或固定格式字符串,时间复杂度为O(nk),其中n是元素数量,k是数字位数。 实现基数排…

js实现贪心算法

js实现贪心算法

贪心算法简介 贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。贪心算法常用于解决优化问题,如最短路径、最小生成树等。 贪心算法的基本步骤 贪心算…

js锚点定位算法实现

js锚点定位算法实现

实现锚点定位的基本方法 使用Element.scrollIntoView()方法是最简单的实现方式。该方法将滚动页面使指定元素出现在视口中。 document.getElementById('tar…

php实现算法

php实现算法

PHP 实现常见算法的方法 PHP 作为一种服务器端脚本语言,可以实现多种算法。以下是几种常见算法的 PHP 实现示例。 冒泡排序算法 冒泡排序是一种简单的排序算法,通过重复遍历列表,比较相邻元素并…

php算法实现

php算法实现

PHP 算法实现指南 PHP 作为一种广泛使用的服务器端脚本语言,适用于多种算法实现场景。以下是常见算法在 PHP 中的实现方法。 排序算法 冒泡排序 function bubbleSort($a…

php 实现共识算法

php 实现共识算法

共识算法简介 共识算法是分布式系统中确保多个节点对某一数据或状态达成一致的机制。常见的共识算法包括Paxos、Raft、PBFT(实用拜占庭容错)等。PHP作为一种后端语言,可以实现这些算法的简化版本…