JavaScript实现的七种常用排序算法解析和应用

分类:知识百科 日期: 点击:0

JavaScript实现的七种常用排序算法

JavaScript支持多种排序算法,其中最常用的七种排序算法分别是冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序和堆排序。下面将对这七种排序算法的实现方法和应用进行详细解析。

1. 冒泡排序

冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

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

冒泡排序的应用场景一般是数据量不大的排序,因为它的复杂度较高,数据量大的时候效率比较低。

2. 插入排序

插入排序也是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

function insertSort(arr) {
  let 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;
}

插入排序的应用场景一般是数据量小的排序,因为它的复杂度较低,数据量小的时候效率比较高。

3. 选择排序

选择排序是一种简单直观的排序算法,它的工作原理是在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

function selectSort(arr) {
  let len = arr.length;
  let minIndex, temp;
  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;
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}

选择排序的应用场景一般是数据量小的排序,因为它的复杂度较低,数据量小的时候效率比较高。

4. 希尔排序

希尔排序是一种插入排序的变种,它的基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

function shellSort(arr) {
  let len = arr.length;
  let gap = Math.floor(len / 2);
  let temp, preIndex;
  while (gap > 0) {
    for (let i = gap; i < len; i++) {
      temp = arr[i];
      preIndex = i - gap;
      while (preIndex >= 0 && arr[preIndex] > temp) {
        arr[preIndex + gap] = arr[preIndex];
        preIndex -= gap;
      }
      arr[preIndex + gap] = temp;
    }
    gap = Math.floor(gap / 2);
  }
  return arr;
}

希尔排序的应用场景一般是数据量较大的排序,因

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。