当前位置: 代码迷 >> C语言 >> [求助]简单排序问题
  详细解决方案

[求助]简单排序问题

热度:108   发布时间:2007-08-23 22:44:27.0
[求助]简单排序问题
最近遇到一个小问题百思不得其解:从键盘输入几个字母(区分大小写),要求将这些字母按字典顺序(A~Z)排序。 比如输入了D c B a,则结果是:a B c D。

各位高手帮帮我这个小菜鸟吧 提供些思路就行 要是能写出程序来就最好啦 先谢谢了
----------------解决方案--------------------------------------------------------

你可以把输入的字符都转化为小写或者大写,然后在比较排序!


----------------解决方案--------------------------------------------------------
利用ascII码或者直接进行比较也行,和数字没啥区别:)
----------------解决方案--------------------------------------------------------
基本意思就是2楼的
----------------解决方案--------------------------------------------------------
回复:(ConZhang)你可以把输入的字符都转化为小写或...
我都转成小写了 也能排序 就是不知道怎么还原 就是不知道怎么按照原来输入的大小写输出
----------------解决方案--------------------------------------------------------
请问输入BAba应该输出什么?
----------------解决方案--------------------------------------------------------
回复:(雨中飞燕)请问输入BAba应该输出什么?
忘记说了 应该是要求输入不同的字母
----------------解决方案--------------------------------------------------------
统计排序
----------------解决方案--------------------------------------------------------
回复:(vistafans)[求助]简单排序问题

/*---------------------------------------------------------------------------
File name: CaseInsensitiveCompare.cpp
Author: HJin (email: fish_sea_bird [at] yahoo [dot] com )
Created on: 8/23/2007 08:59:41
Environment: Windows XP Professional SP2 English +
Visual Studio 2005 v8.0.50727.762


Modification history:
===========================================================================


Problem statement:
---------------------------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=165002

最近遇到一个小问题百思不得其解:从键盘输入几个字母(区分大小写),要求将这些字母按字典顺序(A~Z)排序。 比如输入了D c B a,则结果是:a B c D。

各位高手帮帮我这个小菜鸟吧 提供些思路就行 要是能写出程序来就最好啦 先谢谢了


Sample output:
---------------------------------------------------------------------------
DcBa
a B c D Press any key to continue . . .

BAba
A a B b Press any key to continue . . .

CaseInsensitiveCompare
a a C C e e e e I i i m n n o p r s s s t v Press any key to continue . . .

*/

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>

using namespace std;


// functor for sort
struct CaseInsensitiveCompare
{
bool operator()(const char a, const char b)
{
return (a|0x20)<(b|0x20);
}
};


int main()
{
char s[1000];
cin>>s;

vector<char> vc(s, s+strlen(s));

sort(vc.begin(), vc.end(), CaseInsensitiveCompare());

copy(vc.begin(), vc.end(), ostream_iterator<char>(cout, " "));

return 0;
}


----------------解决方案--------------------------------------------------------

转换下,按小写或大写转换,保留原来的字符作卫星数据,再按转换后的关键字排序即可!


----------------解决方案--------------------------------------------------------
  相关解决方案