字符串排序算法,该怎么处理
字符串排序算法
我想实现这样的排序功能:
A
a
B
b
.......
1
2
3
.....
每个字符串长度是16 ;
例如: "Ad" ,"aa","AA","BB","b","A2"...
排序完是这样的 "AA" ,"Ad","A2","aa","BB","b"... 求思路
------解决方案--------------------
其实关键就是单字符之间的大小比较,如果不想写一堆if...else语句的话,这种情况有一个很简单的办法,就是建立一个索引数组,
下标就是ASCII字符,值就是各个字符所对应的大小次序,利用这个数组,任何大小顺序都是实现,比如,对于你说的这种情况,
可以写成:
comp_id['A'] = 0;
comp_id['a'] = 1;
comp_id['B'] = 2;
comp_id['b'] = 3;
......
comp_id['0'] = 53;
......
排序算法中的大小比较就可以写成这样的形式:
if ( comp_id(ch1) < comp_id(ch2) ) {
.....
}
我想实现这样的排序功能:
A
a
B
b
.......
1
2
3
.....
每个字符串长度是16 ;
例如: "Ad" ,"aa","AA","BB","b","A2"...
排序完是这样的 "AA" ,"Ad","A2","aa","BB","b"... 求思路
------解决方案--------------------
其实关键就是单字符之间的大小比较,如果不想写一堆if...else语句的话,这种情况有一个很简单的办法,就是建立一个索引数组,
下标就是ASCII字符,值就是各个字符所对应的大小次序,利用这个数组,任何大小顺序都是实现,比如,对于你说的这种情况,
可以写成:
comp_id['A'] = 0;
comp_id['a'] = 1;
comp_id['B'] = 2;
comp_id['b'] = 3;
......
comp_id['0'] = 53;
......
排序算法中的大小比较就可以写成这样的形式:
if ( comp_id(ch1) < comp_id(ch2) ) {
.....
}