经典排序算法:冒泡排序(Bubble Sort)

本文详细介绍了冒泡排序的基本思想、案例分析和代码实现,并探讨了冒泡排序的优化策略,通过示例展示了冒泡排序如何将无序数组转换为有序数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冒泡排序(Bubble Sort)
冒泡排序作为排序中的经典算法,其思想是非常具有意义的,同时也是面试官很经常提问面试者的考题。
它的基本思想是:两两比较相邻的记录的关键字,如果反序则交换,知道没有反序的记录为止。

案例分析
假设我要对这么一个数组进行排序:
9,1,5,8,3,7,4,6,2

冒泡图:
在这里插入图片描述

冒泡顾名思义就是从下往上冒,因此我们的循环从底开始,即从2开始。

第一轮,2先与6比较,2小于6,因此2与6交换位置。2小于4,2与4交换位置,以此类推,第一轮冒泡后的结果是:1,9,2,5,8,3,7,4,6
第二轮,6与 4比较,6大于4,不交换位置。4与7比较,7大于4,7和4交换位置,以此类推,第二轮冒泡结果:1,2,9,3,5,8,4,7,6
第三轮,6与7比较,7大于6,交换位置。4与6比较,不交换位置。8与4比较,交换位置,以此类推,第三轮冒泡结果为:1,2,3,9,4,5,8,6,7
第四轮,7与6比较,不交换位置。6与8比较,交换位置。5与6比较,不交换位置。知道9与4比较,交换位置,第四轮冒泡结果为:1,2,3,4,9,5,6,8,7
第五轮,基本完成排序,只需要循环把9交换至最后一个即可。
最终的冒泡结果为:
1,2,3,4,5,6,7,8,9

代码实现
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 10

typedef struct
{
int r[MAXSIZE];
int length;
}SqList;

//交换函数
void swap(SqList *L, int i, int j){
int temp = L->r[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值