2 条题解

  • 1
    @ 2025-12-27 11:53:47
    #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
      @ 2025-10-29 16:33:15

      思路分析

      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
      上传者