冒泡排序思想
- 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
- 直观表达,每一趟遍历,将一个最大的数移到序列末尾。
算法描述
- 比较相邻的元素,如果前一个比后一个大,交换之。
- 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
- 第二趟将第二大的数移动至倒数第二位
- 因此需要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]);
复杂度
- 时间复杂度:O(N*N)
- 最好情况: O(N)
- 最差情况:O(N*N)
- 空间复杂度: O(1)
- 稳定性:稳定
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。