# 每日一题(2)--很多个数排序问题

> 发布于：2020-10-08 | 分类：刷题 | 原文：https://www.imbailey.cn/post/number-sorting-problem

【题目描述】

给出n个同学的身高，请根据他们的身高升序排列并输出排序结果。

【输入格式】

第一行包含1个正整数 n（2<n≤100），表示有 n 个同学的身高。

第二行包含 n 个正整数，之间用一个空格隔开，表示 n 个同学的身高。每个同学的身高都在 150~200 厘米之间。

【输出格式】

一行 n 个正整数，之间用一个空格隔开，表示 n 个同学根据身高升序排列的结果。

For example:

Input

Result

7  
180 170 176 160 155 150 160

150 155 160 160 170 176 180

## 答案

```
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int i,j,k,n,a[100];

    //输入部分
    cin >> n;
    for(i=1;i<=n;i++)
    {
        cin >> a[i];
    }

    //输出部分
    for(i=1;i<=n;i++)       //外层循环i,选出第i位小的数
    {
        k = i;      //a[k]是被比较的那个数
        for(j=i+1;j<=n;j++)     //内层循环，选出第i位之后最小的数
        {
            if(a[j]<a[k])
            {
                k = j;      //遇到更小的数，替换a[k]
            }
        }
        if(k!=i)
        {
            swap(a[i],a[k]);        //把最小数替换到前面
        }
    }

    //输出部分
    for(i=1;i<n;i++)
    {
        cout << a[i] << " ";
    }
    cout << a[n] << endl;
    return 0;
}
```

思路：“打擂台”：每一趟把最小的数挑出来放好

第一趟把n个数中最小的数放在第一个位置，第二趟把2到n这n-1个数中挑出最小的放在第二个位置，以此类推
