2017-12-09 杭电OJ2000 《ASCII码排序》

来源:互联网 发布:形势与政策论文 网络 编辑:程序博客网 时间:2024/05/17 07:54

1.题目描述

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

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

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

Sample Input
qwe
asd
zxc

Sample Output
e q w
a d s
c x z

2.源代码

#include<iostream>using namespace std;int main(){    char s[3];    while(cin>>s[0]>>s[1]>>s[2])          //控制输入循环     {        int i,j;        //冒泡排序         for(i=0;i<2;i++)                                               //共进行2趟比较(2=3-1)            for(j=0;j<2-i;j++)                               //每趟中要进行(2-i)次两两比较                if(s[j]>s[j+1])                    swap(s[j],s[j+1]);        //输出结果         cout<<s[0]<<" "<<s[1]<<" "<<s[2]<<endl;    }}

3.运行截图

运行截图

AC了

4.调试信息

     主要是冒泡排序那里不是很清楚,重点是分清n个数要进行n-1趟比较,每趟比较中又是进行(n-1)-i次两两比较。 针对这个问题再详细看一下。假设是5,4,3,2,1,这一串数字进行冒泡排序。 那么先从第一个数5开始: 5—4,5—3,5—2,5—1     //一共是4趟。 现在5在这列数的最后了,然后有从第一个数,也就是4开始比较: 4—3,4—2,4—1               //一共是3趟(因为知道第四趟比较时5比4大,所以不比,节省时间) (@_@;)然后这样以此类推,比到最后一位数的时候,也就是1是第一位的时候,也就不用再来一趟比较了,所以n个数只要n-1趟比较,每趟比较要((n-1)-趟数)来计算。

如果不对请您指正。。。。