#include <stdio.h>
int main() {
// 定义一个整数数组并初始化
int a[] = { 33, 55, 66, 78, 90, 20, 30 };
// 计算数组的长度
int len = (sizeof(a) / sizeof(int));
// 定义一个临时变量用于交换元素
int t;
// 外层循环控制排序的轮数,总共需要 len-1 轮
for (int i = 0; i <= len - 2; i++) {
// 内层循环进行相邻元素的比较和交换
for (int j = 0; j <= len - 2 - i; j++) {
// 如果当前元素大于下一个元素,则交换它们的位置
if (a[j] > a[j + 1]) {
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
// 输出排序后的数组
for (int i = 0; i < len; i++) {
printf("%d ", a[i]);
}
return 0;
}
代码解释:
- 数组定义与初始化:
int a[] = { 33, 55, 66, 78, 90, 20, 30 };
定义了一个包含随机的7个整数的数组。 - 计算数组长度:
int len = (sizeof(a) / sizeof(int));
使用 sizeof
运算符计算数组的长度。 - 冒泡排序算法:
- 外层循环:
for (int i = 0; i <= len - 2; i++)
控制排序的轮数,【总共需要 len-1
轮】。 - 内层循环:
for (int j = 0; j <= len - 2 - i; j++)
进行相邻元素的比较和交换。 - 元素交换:如果当前元素
a[j]
大于下一个元素 a[j + 1]
,则交换它们的位置。【交换的时候 需要一个中间变量t来辅助交换】
- 输出排序后的数组:
for (int i = 0; i < len; i++) { printf("%d ", a[i]); }
遍历数组并打印每个元素。