用c语言写一个冒泡排序,并注释每一步的功能
时间: 2023-05-27 21:05:31 浏览: 79
```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[] = { 10, 8, 4, 12, 3, 15 }; //定义一个数组
int n = sizeof(arr) / sizeof(arr[0]); //获取数组长度
int i;
printf("Original array: "); //输出原始数组
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, n); //调用冒泡排序函数
printf("Sorted array: "); //输出排序后的数组
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
注释:
1. `void bubble_sort(int arr[], int n)`:定义冒泡排序函数,传入数组和数组长度
2. `int i, j, temp`:定义循环计数器和中间变量
3. `for (i = 0; i < n - 1; i++)`:外层循环控制比较轮数,因为每一轮比较都会确定一个数的位置,所以比较轮数为 n-1
4. `for (j = 0; j < n - 1 - i; j++)`:内层循环控制每轮比较次数,因为每一轮比较都会确定一个数的位置,所以每轮比较次数为 n-1-i
5. `if (arr[j] > arr[j + 1])`:如果前一个数大于后一个数,交换它们的位置
6. `int n = sizeof(arr) / sizeof(arr[0])`:获取数组长度
7. `printf("Original array: ");`:输出原始数组
8. `bubble_sort(arr, n)`:调用冒泡排序函数
9. `printf("Sorted array: ");`:输出排序后的数组
10. `return 0`:返回程序正常结束的标志
阅读全文