js常用的几种排序方式

在JavaScript中,有多种排序方式可供选择。以下是几种常见的排序方式以及对应的示例:

冒泡排序(Bubble Sort): 冒泡排序是一种比较简单的排序算法,它重复地比较相邻的两个元素并交换位置,直到整个数组排序完成。

javascript 复制代码
function bubbleSort(arr) {
  const 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;
}

const nums = [5, 3, 8, 4, 2];
const sortedNums = bubbleSort(nums); // [2, 3, 4, 5, 8]

插入排序(Insertion Sort): 插入排序的思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素插入到已排序部分的正确位置。

javascript 复制代码
function insertionSort(arr) {
  const len = arr.length;
  for (let i = 1; i < len; i++) {
    let current = arr[i];
    let j = i - 1;
    while (j >= 0 && arr[j] > current) {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = current;
  }
  return arr;
}

const nums = [5, 3, 8, 4, 2];
const sortedNums = insertionSort(nums); // [2, 3, 4, 5, 8]

选择排序(Selection Sort): 选择排序的思想是每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。

javascript 复制代码
function selectionSort(arr) {
  const len = arr.length;
  for (let i = 0; i < len - 1; i++) {
    let minIndex = i;
    for (let j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    if (minIndex !== i) {
      [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]; // 交换位置
    }
  }
  return arr;
}

const nums = [5, 3, 8, 4, 2];
const sortedNums = selectionSort(nums); // [2, 3, 4, 5, 8]

快速排序(Quick Sort): 快速排序是一种常用的排序算法,它通过选择一个基准元素,将数组划分为左右两个子数组,然后递归地对子数组进行排序。

javascript 复制代码
function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  const pivotIndex = Math.floor(arr.length / 2);
  const pivot = arr.splice(pivotIndex, 1)[0];
  const left = [];
  const right = [];
  for (let 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));
}

const nums = [5, 3, 8, 4, 2];
const sortedNums = quickSort(nums); // [2, 3, 4, 5, 8]

这些是几种常见的排序方式和对应的示例。值得注意的是,在实际应用中,可以根据排序需求和数据规模选择合适的排序算法。另外,JavaScript还提供了内置的排序函数Array.prototype.sort(),可以直接调用该函数对数组进行排序。

相关推荐
是立不是利17 分钟前
大文件导致请求被拒的连锁反应
开发语言·前端·javascript
志尊宝25 分钟前
Vue3 零基础每日笔记(026):emit 子传父——defineEmits 与事件校验
前端·javascript·html·vue3
野生技术架构师35 分钟前
1200 道 JAVA 面试题(各大企业常见面试题及答案)
java·开发语言
“AI国潮设计-小江”44 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流思路)
开发语言·人工智能·python·prompt·aigc
ssshooter1 小时前
Node.js 天生就是异步的,为什么还要消息队列?
javascript·后端·面试
Yyyyyy~1 小时前
【java】类和对象
java·开发语言
草莓熊Lotso1 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
Joy T1 小时前
Spring AI 2.0 进阶入门:Workflow、Routing、Task State 与可控 Agent
开发语言·人工智能·workflow·routing·springai·orchestrator·evaluator
重生之小比特2 小时前
【Java SE】抽象类和接口
java·开发语言
传奇开心果编程2 小时前
【Rust入门知识点学与练】第33课:异步编程入门(async/await)强化
开发语言·学习·rust