1,什么是冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果前面的数比后面的数大就把他们交换过来。
2,程序运行步骤
比较数组相邻的元素大小。如果前面的比后面的大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个,每比较完一轮需要比较的元素数量就减一。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
这里放一个动图帮助大家理解
直接上代码(自己编写了一个print函数用来打印数组)
#include <stdio.h>
void print(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void BubbleSort(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
int l = 0;//每次while循环结束后回到数组第一个下标
int temp = 0;//临时变量,用来储存需要交换的数
while (l != sz - 1 - i)//这里也可以直接用for循环
{
if (arr[l] > arr[l + 1])
{
temp = arr[l];
arr[l] = arr[l + 1];
arr[l + 1] = temp;
l++;
}
else
{
l++;
}
}
}
}
int main()
{
int arr1[10] = { 10,9,8,7,6,5,4,3,2,1 };
int sz = sizeof(arr1) / sizeof(arr1[0]);
BubbleSort(arr1,sz);
print(arr1, sz);
return 0;
}