AOJ 0018 Sorting Five Numbers
問題概要
5つの整数a, b, c, d, eが与えられるので、これらを降順に並び替えよ。
制約
- -105 ≤ a, 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; }