int main() {
// 定义存储5个整数的数组
int arr[5];
int i, j, temp;
// 标记是否发生交换,用于优化冒泡排序
int isSwitch;
// 提示用户输入5个整数
printf("请输入5个整数(以空格分隔):");
for (i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
// 优化版冒泡排序
for (i = 0; i < 4; i++) { // 外层循环:控制排序轮数,最多4轮(5个元素)
isSwitch = 0; // 初始化为0,表示本轮未发生交换
// 内层循环:每轮将最大元素"冒泡"到末尾,已排序部分无需比较
for (j = 0; j < 4 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换相邻元素
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
isSwitch = 1; // 标记发生了交换
}
}
// 若本轮无交换,说明数组已有序,提前终止排序
if (isSwitch == 0) {
break;
}
}
// 输出排序后的数组
printf("排序后的数组为:");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
