📜  js 排序 asendenet - Javascript (1)

📅  最后修改于: 2023-12-03 15:32:23.317000             🧑  作者: Mango

JS排序 - asendenet

在JavaScript中,有许多不同的排序算法,每种算法都有不同的用途。本文将介绍以下几种算法:

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 快速排序
冒泡排序

冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表,比较每对相邻的项,并在需要时交换它们的位置。如果在一次遍历中没有交换任何两个项的位置,则该列表已经排序完成。

/**
 * 冒泡排序
 * @param {Array} arr 需要排序的数组
 * @return {Array} 排序后的数组
 */
function bubbleSort(arr) {
  const len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }
  return arr;
}
选择排序

选择排序也是一种简单的排序算法。它首先在未排序的数组中找到最小的元素,然后将其放在已排序的数组的末尾。接下来,它再从未排序的数组中查找最小的元素,并将其放在已排序的数组的末尾。重复此过程,直到排序完成。

/**
 * 选择排序 
 * @param {Array} arr 需要排序的数组
 * @return {Array} 排序后的数组
 */
function selectSort(arr) {
  const len = arr.length;
  let minIndex;
  for (let i = 0; i < len - 1; i++) {
    minIndex = i;
    for (let j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
  }
  return arr;
}
插入排序

插入排序是一种简单的排序算法,它构建最终排序的数组,每次通过将未排序的元素插入已排序的数组来完成。

/**
 * 插入排序
 * @param {Array} arr 需要排序的数组
 * @return {Array} 排序后的数组
 */
function insertSort(arr) {
  const len = arr.length;
  let preIndex, current;
  for (let i = 1; i < len; i++) {
    preIndex = i - 1;
    current = arr[i];
    while (preIndex >= 0 && arr[preIndex] > current) {
      arr[preIndex + 1] = arr[preIndex];
      preIndex--;
    }
    arr[preIndex + 1] = current;
  }
  return arr;
}
快速排序

快速排序是一种分治算法。它将一个数组分成两个子数组,然后递归地排序子数组。

/**
 * 快速排序
 * @param {Array} arr 需要排序的数组
 * @return {Array} 排序后的数组
 */
function quickSort(arr) {
  if (arr.length <= 1) return arr;
  const pivot = arr[Math.floor(arr.length / 2)];
  const left = [];
  const right = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else if (arr[i] > pivot) {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
}

以上就是JS排序的四种算法,每种算法各有其优缺点,适用于不同的场景。在实际开发中,根据数据量和需要排序的情况,选择合适的算法具有很大的作用。