用C语言写一个冒泡排序并给出注释
时间: 2024-03-13 12:17:34 浏览: 68
用C语言编写冒泡排序
```c
#include <stdio.h>
void bubble_sort(int arr[], int n) { // 定义冒泡排序函数
int i, j, temp;
for (i = 0; i < n - 1; i++) { // 外层循环控制比较轮数
for (j = 0; j < n - 1 - i; j++) { // 内层循环控制每轮比较次数
if (arr[j] > arr[j + 1]) { // 如果前一个数比后一个数大,交换它们
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 2, 4, 1}; // 待排序数组
int n = sizeof(arr) / sizeof(int); // 数组长度
int i;
printf("原数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, n); // 调用冒泡排序函数
printf("排序后:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
注释:
1. `void bubble_sort(int arr[], int n)`:定义冒泡排序函数,参数为待排序数组和数组长度。
2. `for (i = 0; i < n - 1; i++)`:外层循环控制比较轮数,每轮比较后,数组中最大的数会被放到最后一个位置,因此比较轮数只需要进行n-1次。
3. `for (j = 0; j < n - 1 - i; j++)`:内层循环控制每轮比较次数,每轮比较只需要比较前n-1-i个数,因为最后i个数已经排好了序。
4. `if (arr[j] > arr[j + 1])`:如果前一个数比后一个数大,交换它们,这样可以使得每轮比较结束后,最大的数被放到了最后一个位置。
5. `int n = sizeof(arr) / sizeof(int)`:计算数组长度。
6. `bubble_sort(arr, n)`:调用冒泡排序函数对数组进行排序。
7. `printf("%d ", arr[i])`:输出数组元素。
阅读全文