冒泡排序原理:
![](https://img-blog.csdnimg.cn/direct/c028b099b6ac4ffcbcde689e82d73739.png)
因为每一轮都可以找到一个最大的数,且将这个数放置队列的末尾,就像不停地冒泡泡一样,所以这种算法称为冒泡排序。
冒泡排序的优化:
![](https://img-blog.csdnimg.cn/direct/afe81c2912b84f549c39823fdbd72077.png)
冒泡排序由于使用了两层循环嵌套,所以时间复杂度是O(n^2)。
C实现冒泡排序:
#include<stdio.h>
void bubblesort(int arr[],int len)
{
for (int i = 0; i < len - 1; i++)//确定循环轮数
{
for (int j = 0; j < len - 1 - i; j++)//确定每轮需要比较的次数
{
if (arr[j] > arr[j + 1])//前者比后者大,则交换
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void print_arr(int arr[],int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = { 6,12,9,2,15,4 };
int len = sizeof(arr) / sizeof(int);
//printf("%d", len);
printf("排序前结果为:\n");
print_arr(arr, len);
printf("排序后结果为:\n");
bubblesort(arr, len);
print_arr(arr, len);
return 0;
}