【排序算法】冒泡排序及其C语言实现

【排序算法】冒泡排序及其C语言实现,第1张

【排序算法】冒泡排序及其C语言实现

博客对您有所帮助的话,欢迎给个赞啦,你的鼓励是对我最大的支持! 有不足之处也请您评论指教


冒泡排序

下面我们介绍冒泡排序算法的原理及其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.稳定性:稳定

1.4 代码实现 1.4.1 C语言代码
#include

int main() 
{
	void Bubble_sort(int arr[], int len); 
	int arr[6]={5,2,4,6,1,3};
	int k; // 循环输出 
	int len=sizeof(arr)/sizeof(int); // 元素个数 
	Bubble_sort(arr,len);
	// 输出最终排序结果 
	printf("最后结果 "); 
	for(k=0;k*(p+j+1)) // 满足条件 Ai>Ai-1 则交换 
		    {
			    temp=*(p+j);
			    *(p+j)=*(p+j+1);
			    *(p+j+1)=temp;
		    }
   	    }
   	    
   	    printf("第%d轮", i+1); // 输出每一轮冒泡排序后的结果 
   	    for(k=0;k 

运行结果:

图 6   C 语 言 代 码 执 行 结 果 图6~C语言代码执行结果 图6 C语言代码执行结果

1.4.2 Python代码
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 List

List = [5, 2, 4, 6, 1, 3]
print("冒泡排序后的结果:")
print(Bullbesort(List, len(List)))

运行结果

图 7   P y t h o n 语 言 代 码 执 行 结 果 图7~Python语言代码执行结果 图7 Python语言代码执行结果

1.5 参考文献

[1]王道论坛. 2022年数据结构考研复习指导[M]. 北京:电子工业出版社, 2021.


写在最后面的话,此博客为个人通过书本和互联网作为学习资源自己整理而成的笔记,仅作为知识记录及后期复习所用,如有错误,还望评论指教 ——t4ngw.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5721420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存