返回

JavaScript 实现排序算法——冒泡排序:轻松掌控有序世界

前端

冒泡排序:简单直观的排序算法

冒泡排序算法(Bubble Sort)因其简单直观的思想而广受欢迎。它的核心思想是:将待排序的数据序列视为一串气泡,通过不断比较相邻气泡的大小,将较小的气泡向上移动,较大的气泡向下移动,直至所有气泡按从小到大的顺序排列。这个过程就像是在水面上不断冒泡,较小的气泡不断向上浮升,最终水面变得平静有序。

JavaScript 实现冒泡排序算法

使用 JavaScript 实现冒泡排序算法的步骤如下:

  1. 定义一个冒泡排序函数,接收待排序的数据序列作为参数。
  2. 在函数内部,使用双重循环遍历数据序列。外层循环控制排序的趟数,内层循环控制每一趟中相邻元素的比较和交换。
  3. 在内层循环中,比较相邻元素的大小,如果前一个元素大于后一个元素,则交换这两个元素的位置。
  4. 重复步骤 2 和步骤 3,直到没有更多需要交换的元素为止。

代码示例

function bubbleSort(array) {
  let swapped;
  do {
    swapped = false;
    for (let i = 0; i < array.length - 1; i++) {
      if (array[i] > array[i + 1]) {
        let temp = array[i];
        array[i] = array[i + 1];
        array[i + 1] = temp;
        swapped = true;
      }
    }
  } while (swapped);

  return array;
}

const unsortedArray = [5, 3, 1, 2, 4];
console.log("Unsorted array:", unsortedArray);
const sortedArray = bubbleSort(unsortedArray);
console.log("Sorted array:", sortedArray);

冒泡排序算法的复杂度分析

冒泡排序算法的时间复杂度为 O(n^2),其中 n 是待排序的数据序列的长度。这是因为冒泡排序算法需要比较和交换相邻元素,而这个过程需要重复 n 次,并且每趟都需要比较 n 个元素。因此,冒泡排序算法的时间复杂度为 O(n^2)。

冒泡排序算法的优缺点

优点:

  • 简单易懂,易于实现。
  • 内存消耗小。
  • 对于少量数据,其效率较高。

缺点:

  • 时间复杂度高,不适用于大型数据集。
  • 不稳定,即对于相同的元素,排序后的顺序可能会改变。

结语

冒泡排序算法虽然简单易懂,但由于其时间复杂度较高,因此不适用于大型数据集的排序。在实际应用中,通常会采用更高级的排序算法,如快速排序、归并排序等,以获得更好的排序性能。