帮我写一篇C语言冒泡排序的代码以及注释
时间: 2023-06-02 10:06:35 浏览: 107
好的,以下是C语言冒泡排序的代码以及注释:
```
#include <stdio.h>
int main() {
int array[5] = {5, 2, 7, 3, 1}; // 待排序的数组
int length = sizeof(array) / sizeof(array[0]); // 数组的长度
// 冒泡排序
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1 - i; j++) {
if (array[j] > array[j+1]) {
int temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
// 输出排序后的数组
for (int i = 0; i < length; i++) {
printf("%d ", array[i]);
}
return 0; // 返回0,表示程序正常结束
}
```
注释:
1. `#include <stdio.h>`:包含标准输入输出的头文件。
2. `int main() { ... }`:程序的入口函数,可执行一系列操作。
3. `int array[5] = {5, 2, 7, 3, 1};`:声明并初始化一个长度为5的整数型数组。
4. `int length = sizeof(array) / sizeof(array[0]);`:通过计算数组总字节数与单个元素字节数之比,算出数组的长度。
5. `for (int i = 0; i < length - 1; i++) { ... }`:外层循环,控制冒泡排序的次数。数组长度为n时,最多需要进行n-1次排序,故循环条件为`length - 1`,即4次。
6. `for (int j = 0; j < length - 1 - i; j++) { ... }`:内层循环,每次排序过程中,从第一个元素开始,依次比较相邻两个元素的大小,并进行交换,循环次数依次递减。
7. `if (array[j] > array[j+1]) { ... }`:如果前一个元素的值大于后一个元素的值,则进行交换。
8. `int temp = array[j+1]; array[j+1] = array[j]; array[j] = temp;`:利用临时变量temp,交换相邻两个元素的值。
9. `for (int i = 0; i < length; i++) { printf("%d ", array[i]); }`:输出排序后的整个数组。
10. `return 0;`:表示程序正常结束。
阅读全文