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日

相关文章

  • php数组冒泡排序算法实例

    让我们来详细讲解一下“PHP 数组冒泡排序算法实例”。 什么是冒泡排序? 冒泡排序算法是一种基于比较的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,如果它们的顺序错误,就将它们交换位置。这个过程直接比较相邻元素,每一轮都将最小的元素放到序列的开头,就像气泡不断上升一样,因此得名冒泡排序。 基本的冒泡排序实现方法 下面是一个基本的实现方法,用 PHP…

    算法与数据结构 2023年5月19日
    00
  • 详解go语言中sort如何排序

    下面是关于”go语言中sort如何排序”的详细讲解。 sort 包简介 sort 包是 Go 语言标准库中的一个包,主要提供排序的功能,使用方便,可以满足我们日常开发中各种排序需求。sort 包中提供的排序方法有: sort.Slice sort.SliceStable sort.Sort sort.Stable sort.Slice sort.Slice …

    算法与数据结构 2023年5月19日
    00
  • JS中多层次排序算法的实现代码

    让我为你介绍一份JS中多层次排序算法的实现代码攻略。 简介 多层次排序是指一个列表需要依据不同的规则进行排序,例如按照价格、销量、评分等进行排序。在JS中,我们可以通过自定义排序函数实现多层次排序。 实现 以下是实现多层次排序的示例代码: const products = [ { name: ‘iPhone 11’, price: 799, sales: 1…

    算法与数据结构 2023年5月19日
    00
  • TF-IDF与余弦相似性的应用(一) 自动提取关键词

    下面我将详细讲解“TF-IDF与余弦相似性的应用(一) 自动提取关键词”的完整攻略。 什么是TF-IDF? TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用于信息检索与分类中的文本特征提取方法,用于评估一段文本中词的重要程度。TF-IDF的核心思想就是:一个词在一篇文档中出现的频次(TF)越高,同时…

    算法与数据结构 2023年5月19日
    00
  • JS使用队列对数组排列,基数排序算法示例

    JS使用队列对数组进行排序,可以使用基数排序算法。 基数排序算法是一种非比较排序算法,通过将待排序数据按照位数切割成个、十、百、千等位,然后从低位依次向高位对每个位数进行排序。基数排序算法在排序过程中使用了队列数据结构来保存临时排序结果。 以下是基数排序算法的JavaScript实现: function radixSort(array) { const ma…

    算法与数据结构 2023年5月19日
    00
  • 纯python实现机器学习之kNN算法示例

    首先我们需要清楚kNN算法的基本思想。kNN算法是一种基于实例的有监督学习算法,可以用于分类和回归问题。对于一个新的未标记数据,该算法会根据其与训练集中数据的距离,找到距离该点最近的k个点,然后根据这k个点的标签或者值来对该点进行分类或回归。 以下是具体实现步骤: 准备数据 kNN算法需要一个已经标记好的训练数据集。这里我们以Iris花卉数据集为例。我们先把…

    算法与数据结构 2023年5月19日
    00
  • c语言冒泡排序法代码

    冒泡排序是常见的排序算法之一,它的基本思想是通过一系列的比较和交换来不断将列表中的最大值或最小值浮到列表的顶部(如冒泡一般),直到整个列表都有序排列。以下是一份c语言版本的冒泡排序代码: void bubbleSort(int arr[], int n){ int i, j; for (i = 0; i < n-1; i++){ for (j = 0;…

    算法与数据结构 2023年5月19日
    00
  • java冒泡排序和选择排序详解

    Java冒泡排序和选择排序详解 冒泡排序 冒泡排序是最简单的排序算法之一,也是入门学习排序算法的基础。该算法的主要思路是从最后一个元素开始,与前面一个元素比较并交换,直到最终将最小元素移动到第一个位置。 冒泡排序实现原理 冒泡排序算法每一轮比较都会将相邻元素中较大或较小的一个元素“冒泡”到待排序序列的最后一个位置。类似于鸡尾酒中的冒泡,所以也叫做“鸡尾酒排序…

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