数据结构与算法(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;
      }
    }
  }
}

参考资料

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

相关推荐
yyy(十一月限定版)2 分钟前
CF2131D Arboris Contractio
算法
朝朝辞暮i10 分钟前
C++ 第 28 课:Lambda 表达式
开发语言·c++·算法
代码什么用13 分钟前
LeetCode-560.和为 K 的子数组
算法·leetcode
All for pursuit.18 分钟前
【回溯-3】39.组合总和
数据结构·c++·算法·leetcode
释厄62327 分钟前
BSD 基础论——不要忘记连接·不要停滞循环·AI基础算法
人工智能·算法
yi01139 分钟前
DAY19: LeetCode 28 找出字符串中第一个匹配项的下标
人工智能·笔记·python·算法·leetcode
不会就选b42 分钟前
算法日常・每日刷题--<动态规划>6
数据结构·算法·leetcode
释厄6231 小时前
AI犯错即异质论——正确认知=免疫与安全防控技术算法
大数据·算法·安全
漂流瓶jz1 小时前
UVA-12545 比特变换器 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·题解·aoapc·算法竞赛入门经典·uva·12545
积流成海1 小时前
哈希碰撞攻击全解析:从MD5到SHA1的安全演进史
算法·安全·哈希算法·哈希函数·盘子工具站·哈希计算