JS常用排序方法实例代码解析

JS常用排序方法实例代码解析

在 JavaScript 中,有很多种排序方法可以使用。本文将介绍常用的四种排序方法及其实例代码,包括冒泡排序、选择排序、插入排序和快速排序。

冒泡排序

冒泡排序是一种简单、但效率低下的排序算法。基本思路是将相邻的两个数进行比较,如果前面的数比后面的数大,则交换这两个数的位置,一直重复这个过程,直到最后一个数是最大数为止。

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

var arr = [3, 2, 5, 1, 4];
console.log(bubbleSort(arr));
// 输出:[1, 2, 3, 4, 5]

上面的代码中,我们先定义一个 bubbleSort 函数,它的参数是一个数组。然后我们使用两个循环来执行冒泡排序算法,每一次循环都会比较相邻的两个数,如果前面的数比后面的数大,则交换位置。最后,我们返回排序后的数组。

选择排序

选择排序是一种简单直观的排序算法,基本思路是从待排序的数组中选择最小的数,将其放在第一位,然后再从剩下的数中选择最小的数,放在第二位,以此类推,直到整个数组排序完成为止。

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

var arr = [3, 2, 5, 1, 4];
console.log(selectionSort(arr));
// 输出:[1, 2, 3, 4, 5]

上面的代码中,我们先定义一个 selectionSort 函数,它的参数是一个数组。然后我们使用两个循环来执行选择排序算法,每一次循环找到当前数组中最小的数,并将它放在对应位置上。最后,我们返回排序后的数组。

插入排序

插入排序是一种简单直观的排序算法,基本思路是将待排序的数组分成两个部分,已排序部分和未排序部分。然后从未排序的部分中依次取出元素,插入到已排序的部分中的合适位置。

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

var arr = [3, 2, 5, 1, 4];
console.log(insertionSort(arr));
// 输出:[1, 2, 3, 4, 5]

上面的代码中,我们先定义一个 insertionSort 函数,它的参数是一个数组。然后我们使用两个循环来执行插入排序算法,每一次循环从未排序的部分中取出一个元素,依次和已排序的部分中的元素比较,插入到合适的位置上。最后,我们返回排序后的数组。

快速排序

快速排序是一种高效的排序算法,基本思路是选定一个基准数,将数组中小于这个基准数的数放到它的左边,大于这个基准数的数放到它的右边,然后再递归对左右两边的数组进行排序,直到数组排序完成为止。

function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
}

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

上面的代码中,我们先定义一个 quickSort 函数,它的参数是一个数组。然后我们使用递归的方式执行快速排序算法,每次选定一个基准数,将数组中小于这个基准数的数放到它的左边,大于这个基准数的数放到它的右边,然后再递归对左右两边的数组进行排序。最后,我们返回排序后的数组。

总结

本文介绍了 JavaScript 中常用的四种排序方法,包括冒泡排序、选择排序、插入排序和快速排序。通过示例代码的讲解,希望能够帮助大家更好地理解和掌握这些排序算法的实现过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS常用排序方法实例代码解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • C++选择排序算法实例详解

    C++选择排序算法实例详解 选择排序算法简介 选择排序是一种简单直观的排序算法,其思想是首先找到序列中的最小值,然后将其放到序列的最前面。接着,从剩余序列中找到次小值,将其放到已排序序列的末尾。以此类推,直到排序完成。 选择排序算法的时间复杂度为$O(n^2)$,空间复杂度为$O(1)$,并且由于其算法思想简单,代码实现容易,所以在实际应用中还是比较常见的排…

    算法与数据结构 2023年5月19日
    00
  • JS实现的计数排序与基数排序算法示例

    可能需要先说明一下,计数排序和基数排序都是针对整数排序的算法。 1. 计数排序 计数排序的基本思想是将每个元素出现的次数统计出来,并按顺序排列。计数排序不是基于元素比较的,而是建立在元素的值域范围较小的前提下的。因此,计数排序的时间复杂度是O(n+k),其中k是元素的值域大小。 算法步骤 统计每个数字出现的次数,得到一个长度为k的计数数组。 将计数数组进行变…

    算法与数据结构 2023年5月19日
    00
  • 利用C++的基本算法实现十个数排序

    利用C++的基本算法实现十个数排序 1. 算法选择 排序问题常见的算法有冒泡排序、插入排序、选择排序、快速排序等,它们的时间复杂度不尽相同,但在本题目的情况下,十个数的排序任何算法都可以。 为了方便,本文将使用最简单的冒泡排序算法。 2. 代码实现 冒泡排序算法的基本思路是从头到尾扫描一遍数组,比较相邻两个元素的大小,如果前一个元素大于后一个元素,则交换它们…

    算法与数据结构 2023年5月19日
    00
  • C语言中的结构体快排算法

    C语言中的结构体快排算法 在C语言中,复杂的数据类型可以通过结构体定义。结构体是一种自定义类型,可以由不同类型的变量组成。快速排序算法是一种高效的排序算法,通过十分巧妙的算法思想,可以在平均$O(nlogn)$的时间复杂度内完成数组的排序。对于结构体类型的排序,在快速排序算法中也可以使用。本文主要讲解如何在C语言中使用结构体进行快排排序。 快速排序算法 快速…

    算法与数据结构 2023年5月19日
    00
  • Lua中写排序算法实例(选择排序算法)

    让我为您详细讲解一下Lua中写排序算法实例(选择排序算法)的完整攻略。 什么是选择排序算法 选择排序是一种简单直观的排序算法,它的工作原理如下: 在待排序的数组中找到最小元素; 将其存放到数组的起始位置; 在剩余未排序的元素中继续寻找最小值,并放到已排序序列的末尾; 重复步骤3,直到待排序序列中的所有元素均已排序完毕。 选择排序的实现思路简单,但由于每次都要…

    算法与数据结构 2023年5月19日
    00
  • golang 归并排序,快速排序,堆排序的实现

    Golang 实现归并排序,快速排序和堆排序 简介 排序算法的实现是大多数程序员必备的技能之一。在这个过程中,我们考虑三种经典的排序算法之一:归并排序,快速排序和堆排序。我们在学习它们的同时,也在学习使用 Golang 写出高效的排序算法。 归并排序 算法原理 归并排序是基于归并操作的一种排序算法,该算法的核心思想是将一个数组分成两个较小的数组,然后递归地将…

    算法与数据结构 2023年5月19日
    00
  • 人脸检测中AdaBoost算法详解

    人脸检测中AdaBoost算法详解 什么是AdaBoost算法? AdaBoost(Adaptive Boosting,自适应增强算法)是一种分类算法,它可以将若干个弱分类器组合起来形成一个强分类器,以提高分类的准确率和鲁棒性。AdaBoost最初用于人脸识别领域,在实际应用中具有良好的效果。 AdaBoost分类器是如何工作的? AdaBoost分类器是基…

    算法与数据结构 2023年5月19日
    00
  • java简单选择排序实例

    Java简单选择排序是一种基于比较的排序算法,其基本思想是每次从待排序数据中选取最小(或最大)的元素,放到已排序的数据的末尾,直到所有元素都被排序完成。以下是Java简单选择排序实现的完整攻略: 算法步骤 遍历待排序的数组,每次选择最小的元素。 将已排序区间的末尾与最小元素进行交换。 扫描完整个数组,排序完成。 代码示例 下面给出了Java的简单选择排序的代…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部