史上最详细最简单的冒泡排序,一学就会,一看就懂,一面试就懵!
发布日期:2021-04-30 21:09:25
浏览次数:122
分类:精选文章
本文共 1350 字,大约阅读时间需要 4 分钟。
冒泡排序详解
冒泡排序是一种简单有效的排序算法,通过反复交换相邻元素的位置,使较大的元素“冒泡”到最后一位,最终得到一个有序的数组。以下是对数组{2,4,3,1}进行冒泡排序的详细过程。
第一轮冒泡
比较元素2和4
元素2(索引0)与元素4(索引1)比较,2<4,无需交换。比较元素4和3
元素4(索引1)与元素3(索引2)比较,4>3,交换位置,数组变为{2,3,4,1}。比较元素4和1
元素4(索引2)与元素1(索引3)比较,4>1,交换位置,数组变为{2,3,1,4}。第二轮冒泡
比较元素2和3
元素2(索引0)与元素3(索引1)比较,2<3,无需交换。比较元素3和1
元素3(索引1)与元素1(索引2)比较,3>1,交换位置,数组变为{2,1,3,4}。比较元素3和4
元素3(索引2)与元素4(索引3)比较,3<4,无需交换。第三轮冒泡
比较元素2和1
元素2(索引0)与元素1(索引1)比较,2>1,交换位置,数组变为{1,2,3,4}。比较元素2和3
元素2(索引1)与元素3(索引2)比较,2<3,无需交换。比较元素3和4
元素3(索引2)与元素4(索引3)比较,3<4,无需交换。优化代码
将上述过程转化为代码,优化后的代码如下:
public static void main(String[] args) { int[] arr = new int[]{2000, 400, 30, 100, 50, 60}; int condition = arr.length - 1; // 设置比较的上限 for (int i = 0; i < condition; i++) { // 外层循环控制每次递减一个元素的范围 for (int j = 0; j < condition - i; j++) { // 内层循环遍历当前范围内的每个元素 if (arr[j] > arr[j + 1]) { // 比较当前元素和下一个元素 int temp = arr[j + 1]; // 交换变量存储 arr[j + 1] = arr[j]; arr[j] = temp; } } } // 输出排序后的数组 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); }} 代码解释
外层循环:for (int i = 0; i < condition; i++)
内层循环:for (int j = 0; j < condition - i; j++)
比较与交换:if (arr[j] > arr[j + 1]) { ... }
通过这种方式,冒泡排序逐渐将最大的元素排至数组末尾,最终完成排序任务。
发表评论
最新留言
感谢大佬
[***.8.128.20]2026年06月24日 12时50分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!