2 条题解
-
1
#include<bits/stdc++.h> using namespace std; int n,a[210],p,mi=INT_MAX; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ if(a[i]<mi) mi=a[i],p=i; } a[p]=a[1],a[1]=mi; cout<<p<<endl; for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } return 0; }答案
-
1
思路分析
1. 任务拆解:
- 读取数组元素个数n
- 读取n个整数
- 找出最左边最小值的位置
- 将最小值与第一个元素交换
- 输出最小值原位置和交换后的数组
2. 关键点分析:
- 需要找最左边的最小值(多个最小值时取第一个)
- 使用交换函数swap交换第一个元素和最小值
- 先输出最小值原来的位置,再输出交换后的数组
- 严格使用小于比较确保找到第一个最小值
3. 步骤规划: 第一步:读取元素个数n 第二步:循环读取n个整数 第三步:遍历数组找出最左边最小值的位置mini 第四步:交换a[1]和a[mini] 第五步:输出mini(最小值原位置) 第六步:输出交换后的整个数组
4. 代码对应:
cin>>n:读取元素个数- 第一个
for循环:输入数组元素 - 第二个
for循环:找出最左边最小值位置mini if(a[i]<min):严格小于确保找到第一个最小值swap(a[1],a[mini]):交换第一个元素和最小值cout<<mini<<endl:输出最小值原位置- 第三个
for循环:输出交换后的数组
- 1
信息
- ID
- 158
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 853
- 已通过
- 313
- 上传者