一、冒泡排序的动态图![](https://i-blog.csdnimg.cn/blog_migrate/aaf1cb710c2c4fb4cc5b586f78230edf.gif)
二、冒泡排序的思想
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
三、时间复杂度与空间复杂度
1. 不管原始数组是否有序,时间复杂度都是O(n2),因为每一个数都要与其他数比较一次,(n-1)2次,分解:n2+2n-1, 去掉低次幂和常数,剩下n2,所以最后的时间复杂度是n2。
2. 空间复杂度是O(1),因为只定义了一个辅助变量,与n的大小无关,所以空间复杂度为O(1)。
四、冒泡排序代码
#include<stdio.h>
#include<stdlib.h>
void BubbleSort(int arr[], int len)
{
int i, j, temp;
for (j = 0; j < len - 1; j++)
{
for (i = 0; i < len