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