暖冬的源码分享

 找回密码
 立即加入

QQ登录

只需一步,快速开始

搜索
热搜: 巧借
查看: 11822|回复: 2

[九度OJ] 题目1066:字符串排序

[复制链接]
发表于 2013-2-19 17:28:50 | 显示全部楼层 |阅读模式
题目描述:

     输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果

输入:

     一个字符串,其长度n<=20

输出:

     输入样例可能有多组,对于每组测试样例,
    按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果

样例输入:

    dcba

样例输出:

    abcd

来源:
    2001年清华大学计算机研究生机试真题(第II套)

回复

使用道具 举报

 楼主| 发表于 2013-2-19 17:29:34 | 显示全部楼层
cin,cout躺着也中枪啊!
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>

  4. using namespace std;

  5. #define STR_LEN 21

  6. void insert_sort(char buf[]);

  7. int main()
  8. {
  9.     char buf[STR_LEN];

  10.     while (cin >> buf)
  11.     {
  12.         insert_sort(buf);
  13.     }

  14.     return 0;
  15. }

  16. void insert_sort(char buf[])
  17. {
  18.     int len = 0, j = 0;
  19.     char temp;
  20.     len = strlen(buf);

  21.     for (int i = 1; i < len; i ++)
  22.     {
  23.         temp = buf[i];
  24.         j = i - 1;
  25.         while(j >= 0 && buf[j] > temp)
  26.         {
  27.             buf[j + 1] = buf[j];
  28.             j -= 1;
  29.         }
  30.         buf[j + 1] = temp;
  31.     }

  32.     cout << buf << endl;
  33. }
  34. /**************************************************************
  35.     Problem: 1066
  36.     User: greenrock
  37.     Language: C++
  38.     Result: Time Limit Exceed
  39. ****************************************************************/
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-19 17:33:48 | 显示全部楼层
cin,cout到底有多慢啊,枪
  1. #include <stdio.h>
  2. #include <string.h>

  3. #define STR_LEN 21

  4. void insert_sort(char buf[]);

  5. int main()
  6. {
  7.     char buf[STR_LEN];

  8.     while (scanf("%s", buf) != EOF)
  9.     {
  10.         insert_sort(buf);
  11.     }

  12.     return 0;
  13. }

  14. void insert_sort(char buf[])
  15. {
  16.     int len = 0, j = 0;
  17.     char temp;
  18.     len = strlen(buf);

  19.     for (int i = 1; i < len; i ++)
  20.     {
  21.         temp = buf[i];
  22.         j = i - 1;
  23.         while(j >= 0 && buf[j] > temp)
  24.         {
  25.             buf[j + 1] = buf[j];
  26.             j -= 1;
  27.         }
  28.         buf[j + 1] = temp;
  29.     }

  30.     printf("%s\n", buf);
  31. }
  32. /**************************************************************
  33.     Problem: 1066
  34.     User: greenrock
  35.     Language: C++
  36.     Result: Accepted
  37.     Time:90 ms
  38.     Memory:1012 kb
  39. ****************************************************************/
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|小黑屋|享码网 ( 京ICP备12003721号 )

GMT+8, 2024-3-29 21:59

Powered by Discuz! X3.5

Copyright © 2001-2021 Tencent Cloud.

快速回复 返回顶部 返回列表