📜  角度 6 中的数组排序 - Javascript (1)

📅  最后修改于: 2023-12-03 14:57:22.534000             🧑  作者: Mango

Javascript 数组排序 – 角度 6

在程序设计中,数组排序是一个普遍且重要的问题。在Javascript编程中,我们可以使用sort() 函数对数组进行排序。sort()函数可以按照数字或字母顺序对数组进行排序。但是,在某些情况下,sort()函数的默认排序算法可能无法满足需求。此时,我们需要使用其他算法对数组进行排序。

在本文中,我们将介绍Javascript中另外两种排序算法:归并排序和快速排序,以及它们的使用方法和代码示例。

归并排序

归并排序是一种经典的排序算法,它的时间复杂度为O(n log n)。该算法的核心思想是将数组分成左右两个部分,分别对左右两部分进行排序,然后再将左右两部分合并。

以下是Javascript中的归并排序实现代码:

function mergeSort(arr) {
  if (arr.length < 2) {
    return arr;
  }
  const middle = Math.floor(arr.length / 2);
  const left = arr.slice(0, middle);
  const right = arr.slice(middle);
  return merge(mergeSort(left), mergeSort(right));
}

function merge(left, right) {
  const result = [];
  let i = 0;
  let j = 0;
  while (i < left.length && j < right.length) {
    if (left[i] < right[j]) {
      result.push(left[i]);
      i++;
    } else {
      result.push(right[j]);
      j++;
    }
  }
  return result.concat(left.slice(i)).concat(right.slice(j));
}

上面代码中,mergeSort()函数使用递归的方式对数组进行归并排序,而merge()函数负责将排序后的左右两部分数组合并。

下面是归并排序的使用方法:

const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
const sortedArr = mergeSort(arr);
console.log(sortedArr); //输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
快速排序

快速排序是一种常用的排序算法,它的时间复杂度为O(n log n)或O(n^2),具体取决于选取的枢轴(pivot)元素。该算法的核心思想是选取一个枢轴元素,将数组分成小于枢轴元素和大于枢轴元素两部分,然后对这两部分递归地进行快速排序。

以下是Javascript中的快速排序实现代码:

function quickSort(arr) {
  if (arr.length < 2) {
    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).concat(pivot, quickSort(right));
}

上面代码中,quickSort()函数使用递归的方式对数组进行快速排序。首先选取数组的第一个元素作为枢轴元素,然后将数组分成小于和大于枢轴元素的两部分。最后通过concat()方法将两部分和枢轴元素进行合并。

下面是快速排序的使用方法:

const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
const sortedArr = quickSort(arr);
console.log(sortedArr); //输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

总结

在Javascript编程中,sort()函数是数组排序的基本方法。但是在某些情况下,我们需要使用其他算法对数组进行排序,例如归并排序和快速排序。本文介绍了这两种算法的使用方法和代码示例。通过学习本文,读者可以更好地理解排序算法的基本原理,并掌握在Javascript中对数组进行归并排序和快速排序的方法。