冒泡排序法(Bubble Sorting)
来源:互联网 发布:mix2 知乎 编辑:程序博客网 时间:2024/06/06 03:45
冒泡排序法(Bubble Sorting)是一种交换排序方法
基本思想:
每次仅进行相邻两个元素的比较,若为逆序(a(i)>a(i+1)),则将两个元素交换。
排序过程:
先将第一个元素和第二个元素进行比较,若为逆序,则交换之;接着比较第二个和第三个元素;依此类推,直到第n-1个元素和第n个元素进行比较、交换为止。如此经过一趟排序,使最大的元素被安置到最后一个元素的位置上。然后,对前n-1个元素进行同样的操作,使次大的元素被安置到第n-1个元素的位置上。重复以上过程,直到没有元素需要交换为止。
举例说明:
原始待排序数组【7 | 3 | 1 | 2 | 6 | 0】
从小到大排序
第一趟排序(外循环)
第一次两两比较 7>3 交换(内循环)
交换前状态【7 | 3】| 1 | 2 | 6 | 0 |
交换后状态【3 | 7】| 1 | 2 | 6 | 0 |
第二次两两比较 7>1 交换(内循环)
交换前状态 | 3 |【7 | 1】| 2 | 6 | 0 |
交换后状态 | 3 |【1 | 7】| 2 | 6 | 0 |
第三次两两比较 7>2 交换(内循环)
交换前状态 | 3 | 1 |【7 | 2】| 6 | 0 |
交换后状态 | 3 | 1 |【2 | 7】| 6 | 0 |
第四次两两比较 7>6 交换(内循环)
交换前状态 | 3 | 1 | 2 |【7 | 6】| 0 |
交换后状态 | 3 | 1 | 2 |【6 | 7】| 0 |
第五次两两比较 7>0 交换(内循环)
交换前状态 | 3 | 1 | 2 | 6 |【7 | 0】
交换后状态 | 3 | 1 | 2 | 6 |【0 | 7】
第二趟排序(外循环)
第一次两两比较 3>1 交换(内循环)
交换前状态【3 | 1】| 2 | 6 | 0 | 7 |
交换后状态【1 | 3】| 2 | 6 | 0 | 7 |
第二次两两比较 3>2 交换(内循环)
交换前状态 | 1 |【3 | 2】| 6 | 0 | 7 |
交换后状态 | 1 |【2 | 3】| 6 | 0 | 7 |
第三次两两比较 3<6 不交换(内循环)
交换前状态 | 1 | 2 |【3 | 6】| 0 | 7 |
交换后状态 | 1 | 2 |【3 | 6】| 0 | 7 |
第四次两两比较 6>0 交换(内循环)
交换前状态 | 1 | 2 | 3 |【6 | 0】| 7 |
交换后状态 | 1 | 2 | 3 |【0 | 6】| 7 |
第五次两两比较 6<7 不交换(内循环)
交换前状态 | 1 | 2 | 3 | 0 |【6 | 7】
交换后状态 | 1 | 2 | 3 | 0 |【6 | 7】
第三趟排序(外循环)
第一次两两比较 1<2 不交换(内循环)
交换前状态【1 | 2】| 3 | 0 | 6 | 7 |
交换后状态【1 | 2】| 3 | 0 | 6 | 7 |
第二次两两比较 2<3 不交换(内循环)
交换前状态 | 1 |【2 | 3】| 0 | 6 | 7 |
交换后状态 | 1 |【2 | 3】| 0 | 6 | 7 |
第三次两两比较 3>0 交换(内循环)
交换前状态 | 1 | 2 |【3 | 0】| 6 | 7 |
交换后状态 | 1 | 2 |【0 | 3】| 6 | 7 |
第四次两两比较 3<6 不交换(内循环)
交换前状态 | 1 | 2 | 0 |【3 | 6】| 7 |
交换后状态 | 1 | 2 | 0 |【3 | 6】| 7 |
第五次两两比较 6<7 不交换(内循环)
交换前状态 | 1 | 2 | 0 | 3 |【6 | 7】
交换后状态 | 1 | 2 | 0 | 3 |【6 | 7】
第四趟排序
第一次两两比较 1<2 不交换(内循环)
交换前状态【1 | 2】| 0 | 3 | 6 | 7 |
交换后状态【1 | 2】| 0 | 3 | 6 | 7 |
第二次两两比较 2>0 交换(内循环)
交换前状态 | 1 |【2 | 0】| 3 | 6 | 7 |
交换后状态 | 1 |【0 | 2】| 3 | 6 | 7 |
第三次两两比较 2<3 不交换(内循环)
交换前状态 | 1 | 0 |【2 | 3】| 6 | 7 |
交换后状态 | 1 | 0 |【2 | 3】| 6 | 7 |
第四次两两比较 3<6 不交换(内循环)
交换前状态 | 1 | 0 | 2 |【3 | 6】| 7 |
交换后状态 | 1 | 0 | 2 |【3 | 6】| 7 |
第五次两两比较 6<7 不交换(内循环)
交换前状态 | 1 | 0 | 2 | 3 |【6 | 7】
交换后状态 | 1 | 0 | 2 | 3 |【6 | 7】
第五趟排序
第一次两两比较 1>0 交换(内循环)
交换前状态【1 | 0】| 2 | 3 | 6 | 7 |
交换后状态【0 | 1】| 2 | 3 | 6 | 7 |
第二次两两比较 1<2 不交换(内循环)
交换前状态 | 0 |【1 | 2】| 3 | 6 | 7 |
交换后状态 | 0 |【1 | 2】| 3 | 6 | 7 |
第三次两两比较 2<3 不交换(内循环)
交换前状态 | 0 | 1 |【2 | 3】| 6 | 7 |
交换后状态 | 0 | 1 |【2 | 3】| 6 | 7 |
第四次两两比较 3<6 不交换(内循环)
交换前状态 | 0 | 1 | 2 |【3 | 6】| 7 |
交换后状态 | 0 | 1 | 2 |【3 | 6】| 7 |
第五次两两比较 6<7 不交换(内循环)
交换前状态 | 0 | 1 | 2 | 3 |【6 | 7】
交换后状态 | 0 | 1 | 2 | 3 |【6 | 7】
以上就是数组【7 | 3 | 1 | 2 | 6 | 0】冒泡排序的全过程
排序完毕,输出最终结果 【0 | 1 | 2 | 3 | 6 | 7】
代码仅供参考:
核心代码:
- 冒泡排序法(Bubble Sorting)
- C Tips: 排序算法:冒泡排序(Bubble sorting)
- 【排序】冒泡排序Bubble Sorting的特点
- 【内部排序】四:冒泡排序(Bubble Sorting)详解与代码
- 冒泡排序(Bubble Sort)
- 冒泡排序(bubble sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序 (Bubble sort)
- 冒泡排序(bubble sort)
- Bubble Sort(冒泡排序)
- 一、冒泡(Bubble)排序
- 冒泡排序(Bubble sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序(Bubble Sort)
- Bubble-Sort(冒泡排序)
- 冒泡排序(bubble sort)
- 树链剖分模板题(luogu3384 【模板】树链剖分)
- Java源码阅读之ArrayList
- 建图最短路同余(luogu2662 vijos1054 xjoi2157)(bzoj2118)
- 左偏树
- 欧拉函数性质证明 : n所有约数的欧拉函数和等于n
- 冒泡排序法(Bubble Sorting)
- contest 15
- 为什么要来写博客
- 计算几何基础模板 以后还会更新
- 判断直线相交思维好题 (poj1039)
- 莫比乌斯反演学习之路~
- border-radius属性详解
- VPP初始化
- AC自动机+dp(CodeForces