ASCII码排序

Problem Description

  输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

Input

  输入数据有多组,每组占一行,有三个字符组成,之间无空格。

Output

  对于每组输入数据,输出一行,字符中间用一个空格分开。

Sample Input

  qwe asd zxc

Sample Output

  e q w a d s c x z

 

 

要让三个数从小到大排,顺序就是:

比较1,2两个数。如果第一个数比第二数大,把这两个数交换,来保证前面两个数按升序排列。

比较2,3两个数。如果第二个数比第三数大,把这两个数交换,来保证后面两个数按升序排列。

经过上面两步,最大的数已经被移到最后。再重复一次第一步。保证三个数都是按升序来排列。

虽然你也可以用排序算法对它进行排序,但那就把问题复杂化了。做ACM的题目,就是要充分利用题目给出的条件(本题一明确指出输入的只有三个字符)。选择最优算法,而不是最通用的算法。

 

 

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     char n[4];
 8 
 9     while (cin >> n)
10     {
11         if (n[0] > n[1]) swap(n[0], n[1]);
12         if (n[1] > n[2]) swap(n[1], n[2]);
13         if (n[0] > n[1]) swap(n[0], n[1]);
14         cout << n[0] <<“ ”<< n[1] <<“ ”<< n[2] << endl;
15     }
16 
17     return 0;
18 }

 

posted @ 2015-01-21 12:47  NYNU_ACM  阅读(5857)  评论(0编辑  收藏  举报