js常见面试题排序

292 阅读1分钟

在 JavaScript 中,有多种方式可以对数组进行排序。以下是一些常用的排序方法:

1. 使用Array.prototype.sort()方法:

Array.prototype.sort() 方法可以对数组进行原地排序,默认按照 Unicode 码点排序数组元素。如果数组包含数字,排序可能不会按照我们期望的方式工作,因此您可以传入一个比较函数来实现自定义排序。

const numbers = [5, 3, 8, 1, 4];

// 使用 sort 方法排序
numbers.sort((a, b) => a - b);

console.log(numbers); // 输出:[1, 3, 4, 5, 8]

在上述示例中,我们使用 sort 方法并提供了一个比较函数,以确保数字按升序排序。

2. 使用Array.prototype.sort()实现降序排序:

要按降序排序,只需将比较函数的顺序颠倒。

const numbers = [5, 3, 8, 1, 4];

// 使用 sort 方法进行降序排序
numbers.sort((a, b) => b - a);

console.log(numbers); // 输出:[8, 5, 4, 3, 1]

3. 使用快速排序(Quick Sort):

快速排序是一种常用的排序算法,您可以使用它来对数组进行排序。以下是一个使用递归实现的快速排序示例:

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

const numbers = [5, 3, 8, 1, 4];
const sortedNumbers = quickSort(numbers);

console.log(sortedNumbers); // 输出:[1, 3, 4, 5, 8]

在这个示例中,我们定义了一个 quickSort 函数,使用快速排序算法对数组进行排序。

4. 使用Array.prototype.sort()自定义排序规则:

您还可以使用sort 方法来排序具有自定义排序规则的复杂对象数组。只需提供一个比较函数,该函数返回正数、负数或零,以指示两个元素的顺序。

以下是一个按照对象属性进行排序的示例:

const persons = [
  { name: "Alice", age: 30 },
  { name: "Bob", age: 25 },
  { name: "Charlie", age: 35 },
];

// 使用 sort 方法按年龄排序
persons.sort((a, b) => a.age - b.age);

console.log(persons);
// 输出:
// [ { name: 'Bob', age: 25 },
//   { name: 'Alice', age: 30 },
//   { name: 'Charlie', age: 35 } ]

这些是 JavaScript 中一些常见的排序方法示例,可以根据您的需求选择合适的方法。 Array.prototype.sort() 通常用于简单的排序任务,而快速排序等算法适用于更复杂的排序需求。

以上只总结了一部分,如果有其他方法小伙伴可以在评论区分享一下