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日

相关文章

  • C++中二叉堆排序详解

    C++中二叉堆排序详解 什么是二叉堆排序 二叉堆是一种特殊的二叉树,它有两个特性: 根节点的键值是所有节点中最小/最大的; 对于节点i的键值一定不大/小于它的父节点i/2。 根据第二个规则,我们可以对于任何一个节点i,以i为根的子树都是一个小根堆/大根堆。将二叉堆中最小/最大的根节点取出,然后将最后一个节点放到根位置,再对根节点进行一次向下调整的操作,就可以…

    算法与数据结构 2023年5月19日
    00
  • 基于python进行桶排序与基数排序的总结

    基于python进行桶排序与基数排序的总结 桶排序 桶排序是一种稳定的排序算法,利用预先定义的桶按照一定的映射关系将待排序的元素分配到不同的桶中,并对每个桶中的元素进行排序,最后将所有桶中的结果合并起来即可。 具体的步骤如下: 找出待排序数组中的最大值max和最小值min,确定所需桶的数量,建立一个包含顺序桶的桶(列表)bucket和一个空列表result。…

    算法与数据结构 2023年5月19日
    00
  • Java实现单向链表的基本功能详解

    Java实现单向链表的基本功能详解 单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含存储数据的元素和一个指向下一个节点的指针。Java语言可以很方便地实现单向链表,本文将详细介绍Java实现单向链表的基本功能。 一、定义链表节点类 链表的基本单元是节点,我们需要定义一个节点类来描述它。节点类需要包含两个部分:存储数据的元素和指向下一个节点的指针…

    算法与数据结构 2023年5月19日
    00
  • JavaScript中的排序算法代码

    JavaScript中的排序算法是基于不同的算法实现的,主要包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。下面我们会分别讲解这些算法的具体实现过程,其中包括每个算法的时间复杂度、空间复杂度、优缺点以及关键代码实现。 冒泡排序 冒泡排序是一种交换排序算法,其基本思想是重复地从序列中比较相邻的两个元素,一遍遍地交换相邻逆序的元素。在一趟排序中如果没有进…

    算法与数据结构 2023年5月19日
    00
  • JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】

    JS前端面试必备——基本排序算法原理与实现方法详解 在前端面试中,算法是一个必考的考点,掌握一些基本的排序算法对于一个前端工程师来说是非常重要的。 排序算法的分类 排序算法可以按照许多不同的标准进行分类: 平均时间复杂度 空间复杂度 稳定性 内部排序和外部排序 在这篇文章中,我们将按照时间复杂度从小到大的顺序介绍以下五个基本的排序算法:插入排序、选择排序、归…

    算法与数据结构 2023年5月19日
    00
  • JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】

    JavaScript数据结构与算法之基本排序算法定义与效率比较 概述 排序是计算机科学中最常见的操作之一,是将数据按照一定的顺序重新排列的过程。排序算法被广泛应用于搜索、数据压缩、数据库等领域。JavaScript中常用的基本排序算法有3种:冒泡排序、选择排序和插入排序。本文将详细介绍这三种算法的原理、JavaScript实现以及时间复杂度比较。 冒泡排序 …

    算法与数据结构 2023年5月19日
    00
  • STl中的排序算法详细解析

    STl中的排序算法详细解析 概述 在STL中,sort是一种常用的排序算法。sort算法旨在将元素从小到大排序,但也可以使用cmp函数指定排序方式。 算法实现 sort算法基于“快速排序”算法的实现。其基本思想是从待排序列中选取一定的数值作为划分元素(pivot),通过一趟排序将所有比该元素小的数放到它的左边,所有比该元素大的数放到它的右边,然后再对左右两个…

    算法与数据结构 2023年5月19日
    00
  • Java分治归并排序算法实例详解

    Java分治归并排序算法实例详解 什么是分治归并排序算法 分治法是一种算法解决问题的思想,即将一个问题分成若干个小问题,再将小问题分成更小的子问题,直到最后子问题可以很容易地直接求解,原问题的解即子问题的解的合并。归并排序算法采用了分治法思想,将一个要排序的数组分成两个小数组,再将这两个小数组分别排序,最终合并两个有序小数组成为一个有序大数组。 算法流程 分…

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