当前位置:首页 > JavaScript

用js来实现所有算法

2026-01-31 05:41:27JavaScript

在 JavaScript 中实现所有算法是一个庞大的任务,因为算法种类繁多,涵盖数据结构、排序、搜索、图论、动态规划等多个领域。以下是部分常见算法的 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++) {
    if (arr[i] < pivot) left.push(arr[i]);
    else 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) {
    if (left[0] < right[0]) result.push(left.shift());
    else 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;
    if (arr[mid] < target) left = mid + 1;
    else right = mid - 1;
  }
  return -1;
}

图算法

Dijkstra 最短路径算法

用js来实现所有算法

function dijkstra(graph, start) {
  const distances = {};
  const visited = new Set();
  const nodes = Object.keys(graph);

  nodes.forEach(node => distances[node] = Infinity);
  distances[start] = 0;

  while (nodes.length) {
    nodes.sort((a, b) => distances[a] - distances[b]);
    const closest = nodes.shift();
    if (distances[closest] === Infinity) break;

    visited.add(closest);
    for (let neighbor in graph[closest]) {
      if (!visited.has(neighbor)) {
        const newDistance = distances[closest] + graph[closest][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];
}

数据结构实现

链表

class ListNode {
  constructor(val) {
    this.val = val;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
  }

  append(val) {
    const newNode = new ListNode(val);
    if (!this.head) {
      this.head = newNode;
      return;
    }
    let current = this.head;
    while (current.next) {
      current = current.next;
    }
    current.next = newNode;
  }
}

字符串算法

KMP 字符串匹配

function buildLPS(pattern) {
  const lps = [0];
  let len = 0;
  let i = 1;
  while (i < pattern.length) {
    if (pattern[i] === pattern[len]) {
      len++;
      lps[i] = len;
      i++;
    } else {
      if (len !== 0) len = lps[len - 1];
      else {
        lps[i] = 0;
        i++;
      }
    }
  }
  return lps;
}

function KMP(text, pattern) {
  const lps = buildLPS(pattern);
  let i = 0, j = 0;
  while (i < text.length) {
    if (text[i] === pattern[j]) {
      i++;
      j++;
    }
    if (j === pattern.length) return i - j;
    else if (i < text.length && text[i] !== pattern[j]) {
      if (j !== 0) j = lps[j - 1];
      else i++;
    }
  }
  return -1;
}

这些示例涵盖了算法的主要类别,但实际应用中可能需要根据具体需求进行调整。完整的算法实现通常需要结合具体问题场景进行优化。

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

相关文章

php 实现算法

php 实现算法

PHP 实现常见算法的方法 PHP 作为一门服务器端脚本语言,可以实现多种算法。以下是一些常见算法的 PHP 实现示例。 排序算法 冒泡排序 function bubbleSort($array)…

js实现基数算法

js实现基数算法

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

蚁群算法js实现

蚁群算法js实现

蚁群算法简介 蚁群算法(Ant Colony Optimization, ACO)是一种模拟蚂蚁觅食行为的启发式算法,常用于解决组合优化问题(如旅行商问题TSP)。蚂蚁通过信息素(pheromone)…

用JS实现快速排序算法

用JS实现快速排序算法

快速排序的原理 快速排序是一种分治算法,通过选择一个基准元素(pivot)将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归地对这两部分进行排序。 代码实现 function quickS…

js实现24点算法

js实现24点算法

24点算法简介 24点游戏的目标是通过加、减、乘、除四则运算,将4个数字组合成结果为24的表达式。以下是基于JavaScript的实现方法。 基本思路 排列组合:生成所有可能的数字排列顺序。 运算符…

算法js实现

算法js实现

JavaScript 算法实现基础 JavaScript 作为一门灵活且强大的编程语言,能够实现各种常见算法。以下是一些基础算法的 JavaScript 实现示例。 排序算法 快速排序是一种高效的排…