要让三个数从小到大排,顺序就是:
- 比较1,2两个数。如果第一个数比第二数大,把这两个数交换,来保证前面两个数按升序排列。
- 比较2,3两个数。如果第二个数比第三数大,把这两个数交换,来保证后面两个数按升序排列。
- 经过上面两步,最大的数已经被移到最后。再重复一次第一步。保证三个数都是按升序来排列。
虽然你也可以用排序算法对它进行排序,但那就把问题复杂化了。做ACM的题目,就是要充分利用题目给出的条件(本题一明确指出输入的只有三个字符)。选择最优算法,而不是最通用的算法。
#include <iostream>#include <algorithm>
using namespace std;
int main(void)
{
char n[4];
while (cin >> n)
{
if (n[0] > n[1]) swap(n[0], n[1]);
if (n[1] > n[2]) swap(n[1], n[2]);
if (n[0] > n[1]) swap(n[0], n[1]);
cout << n[0] << ' ' << n[1] << ' ' << n[2] << endl;
}
return 0;
}