前端面试题21(js排序方法)

在这里插入图片描述
JavaScript 中有多种内置和自定义的排序方法。内置的 .sort() 方法是最直接的排序方式,而自定义排序算法如冒泡排序、选择排序、插入排序、希尔排序、快速排序等则提供了更深层次的学习和应用价值。下面我将详细介绍这些排序方法,并给出相应的示例代码。

1. 内置 .sort() 方法

JavaScript 数组的 .sort() 方法可以对数组元素进行排序。默认情况下,它按照字符串的Unicode码点顺序排序。对于数字排序,通常需要提供一个比较函数。

示例代码:

let numbers = [5, 3, 8, 1, 2];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

2. 冒泡排序

冒泡排序通过重复遍历数组,比较相邻元素并交换它们(如果顺序错误),直到没有更多的交换为止。

示例代码:

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]) {
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
            }
        }
    }
    return arr;
}

let numbers = [5, 3, 8, 1, 2];
bubbleSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

3. 选择排序

选择排序每次从待排序的部分找出最小(或最大)的元素,存放到序列的起始位置。

示例代码:

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

let numbers = [5, 3, 8, 1, 2];
selectionSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

4. 插入排序

插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

示例代码:

function insertionSort(arr) {
    let len = arr.length;
    for (let i = 1; i < len; i++) {
        let current = arr[i];
        let j = i - 1;
        while (j >= 0 && arr[j] > current) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = current;
    }
    return arr;
}

let numbers = [5, 3, 8, 1, 2];
insertionSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

5. 希尔排序

希尔排序是插入排序的一种更高效的改进版本,通过将整个数据分割成若干个子序列分别进行插入排序来提升性能。

示例代码:

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

let numbers = [5, 3, 8, 1, 2];
shellSort(numbers);
console.log(numbers); // 输出:[1, 2, 3, 5, 8]

以上是 JavaScript 中一些基本排序方法的讲解和示例代码。每种排序算法都有其特点和适用场景,理解它们的工作原理有助于在实际项目中做出更合适的选择。

相关推荐

  1. 端面试题-说说你了解的js数据结构?(2024.1.29)

    2024-07-10 15:52:02       55 阅读
  2. 端面试题html

    2024-07-10 15:52:02       58 阅读
  3. 端面试题css

    2024-07-10 15:52:02       53 阅读
  4. 端面试题-webpack

    2024-07-10 15:52:02       61 阅读
  5. 端面试题 ===> 【HTML】

    2024-07-10 15:52:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 15:52:02       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 15:52:02       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 15:52:02       90 阅读
  4. Python语言-面向对象

    2024-07-10 15:52:02       98 阅读

热门阅读

  1. ArcGIS Pro SDK (八)地理数据库 2 定义

    2024-07-10 15:52:02       28 阅读
  2. 面试题 12. 矩阵中的路径

    2024-07-10 15:52:02       27 阅读
  3. 算法整理——【贪心算法练习(2)】

    2024-07-10 15:52:02       28 阅读
  4. RK3588开发笔记-ES8311音频芯片调试记录

    2024-07-10 15:52:02       27 阅读
  5. Selenium 等待

    2024-07-10 15:52:02       24 阅读
  6. MySQL中的JOIN、LEFT JOIN、RIGHT JOIN讲解

    2024-07-10 15:52:02       25 阅读