冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
冒泡排序的原理:
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。图解如下:
第一个元素进行比较完了之后,再按照第一次循环往复,直到达成最终的结果
元素个数 | 循环次数 | 交换次数(1个数字) |
8 | 7 | 6(元素个数 - 1 - 元素下标) |
9 | 8 | 7(元素个数 - 1 - 元素下标) |
10 | 9 | 8(元素个数 - 1 - 元素下标) |
代码:
#include <stdio.h>
//冒泡排序
void Bubble_Sort(int arr[], int sz)
{
int i = 0;
int ret = 0;
for (i = 0; i < sz - 1; i++)//控制外围循环
{
int j = 0;
for (j = 0;j < sz - 1 - i ; j++)//控制交换数字
{
if (arr[j] > arr[j + 1])
{
ret = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = ret;
}
}
}
}
int main()
{
int arr[] = { 9,8,7,5,4,3,6,2,1,0};
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组元素个数
Bubble_Sort(arr, sz);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}