当前位置:首页 > JavaScript

js实现排序

2026-04-03 22:36:51JavaScript

排序算法实现

JavaScript中实现排序可以通过多种方式,包括内置方法、自定义比较函数或手动实现经典算法。

使用Array.prototype.sort()

默认情况下,sort()方法将元素转换为字符串并按Unicode码点排序:

const arr = [3, 1, 4, 2];
arr.sort(); // 结果为[1, 2, 3, 4]

对于数字排序需传入比较函数:

js实现排序

const nums = [40, 100, 1, 5];
nums.sort((a, b) => a - b); // 升序排列
nums.sort((a, b) => b - a); // 降序排列

对象数组排序

对对象数组按特定属性排序:

const items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 }
];
items.sort((a, b) => a.value - b.value);

手动实现快速排序

递归实现快速排序算法:

js实现排序

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)];
}

手动实现冒泡排序

通过相邻元素比较交换实现:

function bubbleSort(arr) {
  let len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }
  return arr;
}

稳定性处理

当需要保持相同元素的原始顺序时:

const data = [
  { id: 1, priority: 2 },
  { id: 2, priority: 2 } // 需保持原始顺序
];
data.sort((a, b) => {
  if (a.priority === b.priority) {
    return a.id - b.id; // 添加次级排序条件
  }
  return a.priority - b.priority;
});

性能注意事项

  • 原生sort()方法在不同浏览器中的实现不同(V8使用Timsort)
  • 大数据量时建议使用Web Worker避免阻塞主线程
  • 对于固定模式数据可考虑使用计数排序等非比较算法

标签: js
分享给朋友:

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…