• JS数组排序


    在JavaScript中,有多种方法可以对数组进行排序。下面介绍几种常用的排序方法:

    1. Array.prototype.sort():这是JavaScript内置的排序方法,它可以对数组中的元素进行排序。默认情况下,sort()方法会将数组元素转换为字符串并按照Unicode编码进行排序。如果要按照其他规则进行排序,可以传入一个比较函数作为参数。

    1. var array = [3, 9, 2, 7, 5];
    2. array.sort(); // 默认按照Unicode编码排序
    3. console.log(array); // 输出 [2, 3, 5, 7, 9]

    如果想要按照升序或降序排序,可以通过比较函数实现:

      1. var array = [3, 9, 2, 7, 5];
      2. array.sort(function(a, b){
      3. return a - b; // 升序排序
      4. // return b - a; // 降序排序
      5. });
      6. console.log(array); // 输出 [2, 3, 5, 7, 9]
    • 自定义排序函数:除了使用sort()方法外,还可以自定义排序函数来实现特定的排序逻辑。通过自定义排序函数,可以根据自己的需求进行灵活的排序操作。

      1. var array = [3, 9, 2, 7, 5];
      2. array.sort(function(a, b){
      3. if (a > b) {
      4. return 1; // 表示a排在b后面
      5. } else if (a < b) {
      6. return -1; // 表示a排在b前面
      7. } else {
      8. return 0; // a和b相等,保持原有顺序
      9. }
      10. });
      11. console.log(array); // 输出 [2, 3, 5, 7, 9]
    • lodash库:lodash是一个常用的JavaScript工具库,提供了许多实用的函数,其中包括数组排序函数_.sortBy()。使用_.sortBy()可以根据指定的规则对数组进行排序。

      1. var array = [3, 9, 2, 7, 5];
      2. var sortedArray = _.sortBy(array);
      3. console.log(sortedArray); // 输出 [2, 3, 5, 7, 9]

    冒泡排序

    1. function bubbleSort(arr) {
    2. var len = arr.length;
    3. for (var i = 0; i < len - 1; i++) {
    4. for (var j = 0; j < len - 1 - i; j++) {
    5. if (arr[j] > arr[j + 1]) {
    6. // 交换相邻元素
    7. var temp = arr[j];
    8. arr[j] = arr[j + 1];
    9. arr[j + 1] = temp;
    10. }
    11. }
    12. }
    13. return arr;
    14. }

    在这段代码中,外层循环i从0开始,每次循环表示一轮比较。内层循环j从0开始,用于比较相邻元素的大小并进行交换。每一轮循环都会将当前未排序部分中的最大(或最小)元素移到末尾。内层循环的次数随着外层循环的进行而减少,因为每一轮循环都会将一个最大(或最小)元素放到了正确的位置上。

    最后,返回排序后的数组即可。可以使用以下代码测试冒泡排序函数:

    1. var array = [3, 9, 2, 7, 5];
    2. console.log(bubbleSort(array)); // 输出 [2, 3, 5, 7, 9]

    这是冒泡排序的基本思想和实现方式,它是一种简单但效率较低的排序算法,在处理小规模数据时还是比较实用的。

    以上是几种常用的数组排序方法,根据实际需求选择合适的方法进行排序操作。

  • 相关阅读:
    Qt | QSplitter(分离器或分隔符)、QSplitterHandle 类(分界线)
    不同类型的供应商应如何有效合作(中)
    java.util.concurrent 学习笔记(2) 线程池基础
    NuGet包使用方法
    Java的日期与时间之java.time.format.DateTimeFormatter类型简介说明
    已知CSIDL常量值,求其对应路径。
    leetcode算法题--二叉树中和为某一值的路径
    XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
    AI在玩一种很新的艺术,700万网友在线围观,ControlNet又立功了
    int* p[10]和(int*) p[10]的区别
  • 原文地址:https://blog.csdn.net/m0_73481765/article/details/133433193