条件分岐で配列の要素 a[j] が a[j+1] よりも大きいときだけ入れ替えるという処理をN-1回繰り返すという方針で実装する。
※ N は配列の要素数
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int a[110];
for (int i = 0; i < N; ++i) {
cin >> a[i];
}
int tmp;
for (int i = 0; i < N-1; ++i) {
for (int j = 0; j < N-1; ++j) {
if (a[j] > a[j+1]) {
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for (int i = 0; i < N; ++i) {
cout << a[i] << ' ';
}
cout << endl;
return 0;
}
例えば、
5
3 1 4 1 5
を入力すると
1 1 3 4 5
が出力される。
※入力の最初の1回は配列の要素数を入力する。
swap()関数を用いると、次のように書ける。
#include <iostream>
#include <utility>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; ++i) {
cin >> a[i];
}
for (int i = 0; i < N-1; ++i) {
for (int j = 0; j < N-1; ++j) {
if (a[j] > a[j+1]) {
swap(a[j], a[j+1]);
}
}
}
for (int i = 0; i < N; ++i) {
cout << a[i] << ' ';
}
cout << endl;
return 0;
}
sort()関数を用いると、次のようにも書ける。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; ++i) {
cin >> a[i];
}
sort(a,a+N);
for (int i = 0; i < N; ++i) {
cout << a[i] << ' ';
}
cout << endl;
return 0;
}