大学作业,运行不了就把每个for循环里面的int提出来,括号内保留i就行了!!!!!多的我不说了,代码放地下自取自拿,某人在这里求个赞,陆续会更新实验3-5,所有作业都有复制版和详解版,记得关注,谢谢各位:
自取版:
#include <stdio.h>
int main() {
int a[10];
int i, j, temp, max;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < 9; i++) {
max = i;
for (j = i + 1; j < 10; j++) {
if (a[j] > a[max]) {
max = j;
}
}
if (max != i) {
temp = a[i];
a[i] = a[max];
a[max] = temp;
}
}
printf("降序排列后的结果是:\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
详解版:
// 引入标准输入输出库
#include <stdio.h>
int main() {
// 定义一个长度为10的整型数组
int a[10];
// i用于外层循环,j用于内层循环,temp用于交换,max记录最大值的下标
int i, j, temp, max;
// 提示用户输入数据
printf("请输入10个整数:\n");
// 循环读入10个整数
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
// 选择排序算法的外层循环,执行n-1次
for (i = 0; i < 9; i++) {
// 假设当前位置i的元素最大
max = i;
// 内层循环,从i+1位置开始查找最大值
for (j = i + 1; j < 10; j++) {
// 如果找到比当前最大值更大的元素
if (a[j] > a[max]) {
// 更新最大值的下标
max = j;
}
}
// 如果最大值不是当前位置,则交换元素
if (max != i) {
// 使用temp临时变量完成交换
temp = a[i];
a[i] = a[max];
a[max] = temp;
}
}
// 输出排序后的结果提示
printf("降序排列后的结果是:\n");
// 循环输出排序后的数组
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
// 输出换行符
printf("\n");
// 程序正常结束
return 0;
}
这段代码实现了选择排序算法,主要特点:
- 使用选择排序实现降序排列
- 每次从未排序部分选择最大的元素
- 将找到的最大元素放到已排序部分的末尾
- 时间复杂度为O(n²)
- 空间复杂度为O(1),只使用了一个临时变量
排序过程是稳定的,通过不断选择剩余元素中的最大值,最终实现整个数组的降序排列。
记得点赞,谢谢各位~
标签:10,法对,temp,++,max,降序,int,printf From: https://blog.csdn.net/2401_87636602/article/details/144158251