JS实现数组按升序及降序排列的方法

JS实现数组按升序和降序排列的方法有很多种,下面我将从简单到复杂分享几种方法。

sort()方法

sort()方法是JS的一个数组方法,可以对数组排序。它有一个可选的排序函数,用于规定排序规则。

  • 升序排列:
let arr = [3, 1, 4, 7, 2];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3, 4, 7]
  • 降序排列:
let arr = [3, 1, 4, 7, 2];
arr.sort((a, b) => b - a);
console.log(arr); // [7, 4, 3, 2, 1]

冒泡排序

冒泡排序是一种常见的排序算法,在实际应用中也常用到。它的实现思路是:比较相邻的两个元素,如果前一个元素比后一个元素大,就交换他们两个的位置。

  • 升序排列:
function bubbleSort(arr) {
  let len = arr.length;
  for (let i = 0; i < len - 1; 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 arr = [3, 1, 4, 7, 2];
console.log(bubbleSort(arr)); // [1, 2, 3, 4, 7]
  • 降序排列:
function bubbleSort(arr) {
  let len = arr.length;
  for (let i = 0; i < len - 1; 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 arr = [3, 1, 4, 7, 2];
console.log(bubbleSort(arr)); // [7, 4, 3, 2, 1]

快速排序

快速排序也是常用的一种排序算法,它的思路是:从数组中取出一个数,以这个数为基准,将小于这个数的放到其左边,大于这个数的放到其右边,然后递归处理左右两个子数组。

  • 升序排列:
function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  let middleIndex = Math.floor(arr.length / 2);
  let middleValue = arr.splice(middleIndex, 1)[0];
  let leftArr = [];
  let rightArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < middleValue) {
      leftArr.push(arr[i]);
    } else {
      rightArr.push(arr[i]);
    }
  }
  return quickSort(leftArr).concat(middleValue, quickSort(rightArr));
}
let arr = [3, 1, 4, 7, 2];
console.log(quickSort(arr)); // [1, 2, 3, 4, 7]
  • 降序排列:
function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  let middleIndex = Math.floor(arr.length / 2);
  let middleValue = arr.splice(middleIndex, 1)[0];
  let leftArr = [];
  let rightArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < middleValue) {
      rightArr.push(arr[i]);
    } else {
      leftArr.push(arr[i]);
    }
  }
  return quickSort(leftArr).concat(middleValue, quickSort(rightArr));
}
let arr = [3, 1, 4, 7, 2];
console.log(quickSort(arr)); // [7, 4, 3, 2, 1]

这些方法中,sort()方法最为简单,但对于一些要求较高的情况可能需要自定义排序函数,而其他两个算法需要自己完成排序算法代码,但效率通常比sort()方法高。在实际开发中应该根据不同的情况选择合适的排序方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现数组按升序及降序排列的方法 - Python技术站

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

相关文章

  • 经典算法:基数排序的小例子

    让我来为你详细讲解“经典算法:基数排序的小例子”的完整攻略。 前言 基数排序是一种常见的排序算法,它的时间复杂度为O(nk),其中n表示待排序元素的个数,k表示元素的最大值的位数。相对于其他排序算法,它的时间复杂度比较低,适合用于对大量数据排序的情况。 算法思想 基数排序的基本思想是:将待排序的元素按照一定规则拆分成多个关键字,然后依次对每个关键字进行排序,…

    算法与数据结构 2023年5月19日
    00
  • PHP 快速排序算法详解

    PHP 快速排序算法详解 算法原理 快速排序(Quick Sort)是一种高效的排序算法,它的核心思想是分而治之,在序列中选择一个基准元素,将小于基准元素的值放置在基准元素左边,大于基准元素的值放置在基准元素右边,然后再对左右子序列分别执行同样的操作,直到序列有序为止。 具体实现过程如下: 选择一个基准元素 $pivot$,可以随机选择一个元素,也可以选择第…

    算法与数据结构 2023年5月19日
    00
  • C#七大经典排序算法系列(下)

    《C#七大经典排序算法系列(下)》是一篇文章,通过介绍七种经典的排序算法,帮助读者更好地理解排序算法的原理和操作,并且让读者掌握这些算法的基本实现方法。本文将会细致地讲解每种算法的思路、时间复杂度以及使用场景,希望读者能在阅读后掌握七种排序算法的差异和选用方法。 文章包含七种排序算法,分别为:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序和希尔排序…

    算法与数据结构 2023年5月19日
    00
  • TypeScript实现十大排序算法之归并排序示例详解

    TypeScript实现十大排序算法之归并排序示例详解 简介 本文将详细介绍使用 TypeScript 实现归并排序算法的步骤和示例。归并排序是一种非常有效的排序算法,它的时间复杂度为 O(nlogn),在大多数情况下都比快速排序更加稳定和可靠。 步骤 归并排序是一种典型的分治算法,其基本思路是将待排序的数组不断分割为较小的数组,直到每个小数组只有一个元素,…

    算法与数据结构 2023年5月19日
    00
  • C语言库函数qsort及bsearch快速排序算法使用解析

    这里是关于C语言库函数qsort及bsearch快速排序算法使用的详细攻略。 qsort排序函数 1. 定义 qsort是C语言标准库中快速排序算法的一个实现函数。它用于对一个数组中的元素进行排序。qsort函数的定义如下: void qsort(void* base, size_t nitems, size_t size, int (*compar)(co…

    算法与数据结构 2023年5月19日
    00
  • PHP 数组排序方法总结 推荐收藏

    PHP 数组排序方法总结 推荐收藏 1. 为什么要学习数组排序 PHP 数组内置的排序函数,能够对数组的元素进行排序,满足不同场景下的需求。理解如何使用数组排序函数能够提高开发效率,并且能够帮助开发者写出更加高效、优雅的代码。 2. PHP 数组排序函数总结 PHP 数组的排序方法主要有以下几种: 2.1 sort() 对数组进行升序排列。 2.1.1 排序…

    算法与数据结构 2023年5月19日
    00
  • 如何用JavaScript学习算法复杂度

    下面是关于如何用JavaScript学习算法复杂度的完整攻略: 1. 什么是算法复杂度? 算法复杂度指的是算法运行时间与输入数据规模之间的关系。通常使用大O表示法来表示算法的时间复杂度,即在最坏情况下,算法需要执行的基本操作次数和输入规模n的关系。从时间复杂度的角度出发,我们可以比较不同的算法及其优劣。 2. JavaScript中如何编写算法 JavaSc…

    算法与数据结构 2023年5月19日
    00
  • Trie树_字典树(字符串排序)简介及实现

    接下来我将详细讲解“Trie树_字典树(字符串排序)简介及实现”的完整攻略。 什么是 Trie 树? Trie 树,也叫字典树,是一种树形数据结构,用于处理字符串匹配、排序等问题。它的特点是能够快速地查找特定前缀或后缀的字符串。 Trie 树的基本实现 Trie 树通常是一棵多叉树,其中根节点不包含任何字符,每个子节点包含一个字符,组成一个完整的字符串。下面…

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