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

参考资料

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

相关推荐
lucas_AI37 分钟前
Grok 4.6:追平 GPT-5.6 Sol 的半价旗舰,但别只看跑分
人工智能·算法
zephyr0539 分钟前
链表实现O(n log n)时间复杂度的排序——归并排序详解
java·数据结构·算法
喜欢睡觉42 分钟前
双指针判断子序列
算法
贵慜_Derek1 小时前
vLLM-07|MegaMoE 与 FusedMoE:路由相同,算 expert 完全不同
人工智能·算法·llm
机器学习之心1 小时前
基于改进鲸鱼优化算法的CNN-BiLSTM-MATT短期电力负荷预测模型
人工智能·算法·cnn·cnn-bilstm-matt·短期电力负荷预测
windliang1 小时前
Claude Code 源码分析(十):MCP 外部工具如何进入下一轮 Agent 调用
前端·算法·面试
代码地平线1 小时前
C++类与对象(中):默认成员函数与日期类实战
c++·笔记·算法
hansang_IR2 小时前
【题解】可持久化区间仿射区间和(Persistent Range Affine Range Sum)
c++·算法·线段树
XWalnut2 小时前
LeetCode刷题 day37
java·数据结构·算法·leetcode
Smilecoc2 小时前
方向导数与梯度
算法