排序算法——冒泡排序

本文最后更新于:2 个月前

冒泡排序(Bubble Sort)是一种简单,直观的排序算法,它通过比较相邻两个数据,按照从小到大或者从大到小的顺序进行交换,就像一个泡泡冒上去一样,故得名冒泡排序

算法详解

以从小到大为例,冒泡算法是这样实现的:

遍历原始数据,从第一个数开始,到倒数第二个数结束,比较当前数和下一个数的大小,如果当前数比下一个数大,则交换这两个数,这样可以将最大的数转移到末尾,接下来再次遍历,但到倒数第三个数结束,可以将第二大的数转移到倒数第二位,以此类推。

动图演示:

动图演示

优点:空间复杂度低,稳定性高

缺点:时间复杂度,效率低

算法实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>

int bubblesort(int a[], int n){
int i, j, temp;
for(i = 1; i < n; i++){ //外部循环
for(j = 0; j < n - i; j++){ //内部循环
if(a[j] > a[j + 1]){ //比较相邻元素大小
temp = a[j]; //交换值
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}

int main(){
int i = 0;
int a[10]={0};
for(i = 0; i < 10; i++){ //写入数据
scanf("%d",&a[i]);
}
bubblesort(a,10); //排序

for(i = 0; i < 10; i++){ //输出数据
printf("%d ",a[i]);
}

}

输入数据

2 4 1 3 7 9 6 5 8 10

输出数据

1 2 3 4 5 6 7 8 9 10


排序算法——冒泡排序
https://blog.seasalt-haiyan.top/2023/11/22/排序算法——冒泡排序/
作者
Xu Haoyang
发布于
2023年11月22日
更新于
2024年2月28日
许可协议