arrows blog

解いた問題などを適当に書いていきます。

AOJ 0018 Sorting Five Numbers

問題概要

5つの整数a, b, c, d, eが与えられるので、これらを降順に並び替えよ。

制約

  • -105a, b, c, d, e ≤ 105

解法

基本的な考え方は、これと同じ。
上記のリンク先の別解でやればOK。

別解以外の方法では、ソートアルゴリズムを自分で実装する方法がある。
ソートアルゴリズムは、簡単なものだと、バブルソート
選択ソートがある。

安定性(ここでは説明は省略)を考慮すると、バブルソートの方がおすすめである。
ただし、どちらのソートアルゴリズムもデータ数が1000位までは高速だが、それを超えてくると他の方法を用いた方が良い。


また、注意点として、AOJでは、空白区切りで1行に出力する際には、
各データ(ここでは整数)の間にのみ空白を入れ、最後のデータの後には空白を入れないことがある。

コード

#include <iostream>

using namespace std;

int main()
{
    int a[5];
    for (int i = 0; i < 5; i++) {
        cin >> a[i];
    }
    for (int i = 4; i > 0; i--) {
        for (int j = 0; j < i; j++) {
            if (a[j] < a[j+1]) {
                swap(a[j], a[j+1]);
            }
        }
    }
    
    for (int i = 0; i < 5; i++) {
        if (i > 0) cout << " ";
        cout << a[i];
    }
    cout << endl;
    return 0;
}