博客对您有所帮助的话,欢迎给个赞啦,你的鼓励是对我最大的支持! 有不足之处也请您评论指教
冒泡排序
下面我们介绍冒泡排序算法的原理及其C语言代码和Python代码实现,
1.1 算法思想思想: 从前往后(或从后往前)两两比较相邻元素的大小,按照元素的大小( 若 A i > A i − 1 若A_{i}>A_{i-1} 若Ai>Ai−1)进行交换,直到元素全部比较完。
1.2 实例介绍下面将某个实例和图片来介绍冒泡排序的思想和代码;
假设数组
a r r = [ 5 , 2 , 4 , 6 , 1 , 3 ] arr=[5,2,4,6,1,3] arr=[5,2,4,6,1,3]
注:本文依据从前往后冒泡的思想进行实例及代码编写。
下方介绍的图片显示颜色为黄就是已经排好的元素,显示为蓝色就是还未排好的元素,显示为绿色就是正在排序的元素
1.第一轮,
如图1所示,
①从2与5比较开始 ,5>2 ,5与2交换位置,数组元素依次为 2 5 4 6 1 3;
②在 5与4比较,5>4,5与4交换位置,数组元素依次为 2 4 5 6 1 3;
③在 5与6比较 ,5<6,不交换位置,数组元素依次为 2 4 5 6 1 3;
④在6与1比较,6>1,6与1交换位置,数组元素依次为 2 4 5 1 6 3;
⑤在6与3比较,6>3,6与3交换位置,数组元素依次为 2 4 5 1 3 6;
元素6冒泡完成,为最大元素.
图 1 第 1 轮 排 序 图1~第1轮排序 图1 第1轮排序
2、第二轮
如图2所示,
①从2与4比较开始 ,2<4,不交换位置,数组元素依次为 2 4 5 1 3 6 ;
②在 4与5比较,4<5,不交换位置,数组元素依次为 2 4 5 1 3 6 ;
③在 5与1比较 ,5>1,5与1交换位置,数组元素依次为 2 4 1 5 3 6;
④在5与3比较,5>3,5与3交换位置,数组元素依次为 2 4 1 3 5 6;
元素5冒泡完成.
图 2 第 2 轮 排 序 图2~第2轮排序 图2 第2轮排序
3.第3轮
如图3所示,
①从2与4比较开始 ,2<4,不交换位置,数组元素依次为 2 4 1 3 5 6;
②在 4与1比较,4>1,4与1交换位置,数组元素依次为 2 1 4 3 5 6 ;
③在 4与3比较 ,4>3,4与3交换位置,数组元素依次为2 1 3 4 5 6;
元素4冒泡完成.
图 3 第 3 轮 排 序 图3~第3轮排序 图3 第3轮排序
4.第4轮
如图4所示,
①从2与1比较开始 ,2>1,2与1交换位置,数组元素依次为 1 2 3 4 5 6;
②在2与3比较 ,2<3,不交换位置,数组元素依次为1 2 3 4 5 6;
元素3冒泡完成.
图 4 第 4 轮 排 序 图4~第4轮排序 图4 第4轮排序
5.第5轮
如图5所示,
①从1与2比较开始 ,1<2,不交换位置,数组元素依次为1 2 3 4 5 6;
元素2冒泡完成.
图 5 第 5 轮 排 序 图5~第5轮排序 图5 第5轮排序
冒泡完成。
1.3 效率、稳定性和适用性 1.时间效率:
最好情况:
最坏情况:
2.空间效率: O ( 1 ) O(1) O(1);
3.稳定性:稳定
#include
运行结果:
图 6 C 语 言 代 码 执 行 结 果 图6~C语言代码执行结果 图6 C语言代码执行结果
def Bullbesort(List, len): for i in range(0, len-1): for j in range(0, len-i-1): if(List[j]>List[j+1]): temp=List[j+1] List[j+1]=List[j] List[j]=temp return ListList = [5, 2, 4, 6, 1, 3]print("冒泡排序后的结果:")print(Bullbesort(List, len(List)))
运行结果
图 7 P y t h o n 语 言 代 码 执 行 结 果 图7~Python语言代码执行结果 图7 Python语言代码执行结果
[1]王道论坛、2022年数据结构考研复习指导[M]、北京:电子工业出版社, 2021.
写在最后面的话,此博客为个人通过书本和互联网作为学习资源自己整理而成的笔记,仅作为知识记录及后期复习所用,如有错误,还望评论指教 ——t4ngw.