冒泡排序思想

  • 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
  • 直观表达,每一趟遍历,将一个最大的数移到序列末尾

算法描述

  1. 比较相邻的元素,如果前一个比后一个大,交换之。
  2. 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
  3. 第二趟将第二大的数移动至倒数第二位
  4. 因此需要n-1趟;

代码实现(js)

function bubbleSort(nums) {
  let length = nums.length;
  for (let i = 0;i < length - 1;i++) {
    console.log('第', i + 1, '趟');
    for (let j = 0;j < length - 1 - i;j++) {
      if (nums[j] > nums[j + 1]) {
        let a = nums[j];
        nums[j] = nums[j + 1];
        nums[j + 1] = a;
      }
      console.log(nums);
    }
  }
};
bubbleSort([90, 89, 78, 67, 56, 45, 34, 23, 12]);

image

复杂度

  • 时间复杂度:O(N*N)
  • 最好情况: O(N)
  • 最差情况:O(N*N)
  • 空间复杂度: O(1)
  • 稳定性:稳定

sly94
45 声望0 粉丝

引用和评论

0 条评论