如何用冒泡排序算法实现代码练习?

2026-05-07 18:420阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计805个文字,预计阅读时间需要4分钟。

如何用冒泡排序算法实现代码练习?

很多人写的冒泡排序跑了一轮就停了,或者多跑一轮导致越界,问题出在内外层循环的终止条件上。

控制轮数,变量j控制每轮比较的范围,每轮结束后,最大元素冒到末尾,下一轮比较范围要减一。

  • i0n-1(共 n 轮,但实际最多 n-1 轮就能排好)
  • j0n-2-i,不是 n-1-i —— 因为要访问 arr[j+1],所以 j+1 < nj < n-1
  • 如果用 for (int j = 0; j < n - 1 - i; j++),边界刚好卡住不越界

为什么 swap 后不加 break 就不是“优化版”冒泡

标准冒泡每轮都扫到底;所谓“优化”是指提前发现已有序时直接退出。但很多人只加了 if (swapped == false) break;,却忘了重置 swapped 标志位——结果第二轮就失效了。

阅读全文
标签:C

本文共计805个文字,预计阅读时间需要4分钟。

如何用冒泡排序算法实现代码练习?

很多人写的冒泡排序跑了一轮就停了,或者多跑一轮导致越界,问题出在内外层循环的终止条件上。

控制轮数,变量j控制每轮比较的范围,每轮结束后,最大元素冒到末尾,下一轮比较范围要减一。

  • i0n-1(共 n 轮,但实际最多 n-1 轮就能排好)
  • j0n-2-i,不是 n-1-i —— 因为要访问 arr[j+1],所以 j+1 < nj < n-1
  • 如果用 for (int j = 0; j < n - 1 - i; j++),边界刚好卡住不越界

为什么 swap 后不加 break 就不是“优化版”冒泡

标准冒泡每轮都扫到底;所谓“优化”是指提前发现已有序时直接退出。但很多人只加了 if (swapped == false) break;,却忘了重置 swapped 标志位——结果第二轮就失效了。

阅读全文
标签:C