2026-07-17 12:46:40
冒泡排序、选择排序和插入排序是三种基础的排序算法,它们在JavaScript中的实现方式各有特点。以下是对这三种排序算法的详细解析:
冒泡排序原理:冒泡排序通过重复地遍历要排序的列表,比较相邻的元素,并在顺序错误时交换它们。这个过程持续进行,直到列表被完全排序。
特点:
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;}选择排序原理:选择排序将列表分为已排序和未排序两部分。它反复从未排序部分中选择最小(或最大)的元素,并将其与未排序部分的第一个元素交换,从而逐渐扩大已排序部分。
特点:
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)的额外空间。
特点:
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;}总结这三种排序算法虽然对于大型数据集可能不是最有效的,但它们为理解算法设计提供了良好的基础。在实际应用中,可以根据数据集的大小和特性选择合适的排序算法。对于小型数据集或接近排序的数据,插入排序可能是一个不错的选择;而对于教学目的,冒泡排序和选择排序则因其简单易懂而备受青睐。