数据结构与算法(Dart)之冒泡排序(十二)

每次将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序。

一次冒泡至少让一个元素移动到它应该排列的位置,重复N次,就完成了冒泡排序。

时间复杂度

  • 最好情况(已全部有序):O(n)
  • 最坏情况(全部逆序):O(n²)

空间复杂度

  • O(1)
  • 稳定
css 复制代码
///冒泡排序
Future<void> bubbleSort(List<int> src) async {
  //控制需要进行排序的次数。每一轮循环都会确定一个数字的最终位置。
  for (int i = 0; i < src.length; ++i) {
    //遍历当前未排序的元素,通过相邻的元素比较并交换位置来完成排序。
    for (int j = 0; j < src.length - i - 1; ++j) {
      //如果 _numbers[j] 大于 _numbers[j + 1],则交换它们的位置,确保较大的元素移到右边。
      if (src[j] > src[j + 1]) {
        int temp = src[j];
        src[j] = src[j + 1];
        src[j + 1] = temp;
      }
    }
  }
}

参考资料

数据结构 ---七大排序算法(图文详细版)

相关推荐
Mr_health8 分钟前
leetcode:组合排列系列
算法·leetcode·职场和发展
冬夜戏雪12 分钟前
Leetcode 颠倒二进制位/二进制求和
java·数据结构·算法
俩娃妈教编程15 分钟前
2023 年 09 月 二级真题(1)--小杨的 X 字矩阵
数据结构·c++·算法·双层循环
铸人25 分钟前
再论自然数全加和 - 欧拉伽马常数4
算法
prince_zxill1 小时前
探索Nautilus Trader:高性能算法交易平台与事件驱动回测引擎的全面指南
算法
进击的荆棘1 小时前
算法——二分查找
c++·算法·leetcode
识君啊1 小时前
Java 滑动窗口 - 附LeetCode经典题解
java·算法·leetcode·滑动窗口
烟花落o1 小时前
【数据结构系列02】轮转数组、返回倒数第k个节点
数据结构·算法·leetcode·刷题
努力也学不会java1 小时前
【Spring Cloud】统一服务入口-Gateway
后端·算法·spring·spring cloud·gateway·服务发现
追随者永远是胜利者1 小时前
(LeetCode-Hot100)3. 无重复字符的最长子串
java·算法·leetcode·职场和发展·go