冒泡排序、选择排序、插入排序 | JavaScript 中的数据结构和算法

请教一下,冒泡排序、选择排序、插入排序 | JavaScript 中的数据结构和算法
最新回答
宇宙藏进你

2026-07-17 12:46:40

冒泡排序、选择排序和插入排序是三种基础的排序算法,它们在JavaScript中的实现方式各有特点。以下是对这三种排序算法的详细解析:

冒泡排序

原理:冒泡排序通过重复地遍历要排序的列表,比较相邻的元素,并在顺序错误时交换它们。这个过程持续进行,直到列表被完全排序。

特点:

  • 易于理解和实现。
  • 对于大型数据集效率较低,时间复杂度为O(n²)。
  • 主要适用于教育目的和小型数据集。

JavaScript实现:

function bubbleSort(input) { const n = input.length; const sortedArray = [...input]; for (let i = 0; i < n; i++) { for (let j = 0; j < n - 1; j++) { if (sortedArray[j] > sortedArray[j + 1]) { const temp = sortedArray[j]; sortedArray[j] = sortedArray[j + 1]; sortedArray[j + 1] = temp; } } } return sortedArray;}选择排序

原理:选择排序将列表分为已排序和未排序两部分。它反复从未排序部分中选择最小(或最大)的元素,并将其与未排序部分的第一个元素交换,从而逐渐扩大已排序部分。

特点:

  • 易于理解。
  • 时间复杂度为O(n²),对于大型数据集效率不高。
  • 具有最小化交换次数的优点。

JavaScript实现:

function selectionSort(input) { const n = input.length; const sortedArray = [...input]; for (let i = 0; i < n; i++) { let lowestNumberIndex = i; for (let j = i; j < n - 1; j++) { if (sortedArray[j] < sortedArray[lowestNumberIndex]) { lowestNumberIndex = j; } } const temp = sortedArray[i]; sortedArray[i] = sortedArray[lowestNumberIndex]; sortedArray[lowestNumberIndex] = temp; } return sortedArray;}插入排序

原理:插入排序通过构建一个有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上通常采用in-place排序,即只需用到O(1)的额外空间。

特点:

  • 对于小型数据集或接近排序的数据非常有效。
  • 时间复杂度为O(n²),但在实际应用中常作为更复杂算法的简单替代方案。

JavaScript实现:

function insertionSort(input) { const n = input.length; const sortedArray = [...input]; for (let i = 1; i < n; i++) { const comparedNumber = sortedArray[i]; let tempIndex = i; for (let j = i - 1; j >= 0; j--) { if (sortedArray[j] > comparedNumber) { sortedArray[tempIndex] = sortedArray[j]; sortedArray[j] = comparedNumber; tempIndex = j; } else { break; } } } return sortedArray;}总结

这三种排序算法虽然对于大型数据集可能不是最有效的,但它们为理解算法设计提供了良好的基础。在实际应用中,可以根据数据集的大小和特性选择合适的排序算法。对于小型数据集或接近排序的数据,插入排序可能是一个不错的选择;而对于教学目的,冒泡排序和选择排序则因其简单易懂而备受青睐。