请高手帮忙设计一个排序算法

请高手帮忙设计一个排序算法,具体如下:
初始:MT3,MT4,M2,M3,M5,MK2
结果:M2,M3,M5,MK2,MT3,MT4
我的想法是:
1 在初始数组中先找到字母,然后排序得到M,MK,MT的数组1
2 把初始数组按照数字排序得到M2,MK2,MT3,M3,MT4,M5的数组2
3 用数组2的字母和数组1比较,依次遍历M,MK,MT,最后得到结果数组3
大家有什么好想法,请告诉我一下,还有字母排序可以两个字母直接比较吗?
以上排序方法,都用冒泡法。
先谢谢大家的 帮助

凡是排序算法都要有一个确定顺序先后的方法,在排序过程都要借助这个方法来确定先后。
你可以先做个函数compare(a, b),如果按照规则a排在b前则返回True否则False,然后再用快速排序来做排序,冒泡法的效率很低。

貌似还要有字符间比较的方法compare2(a, b)

根据你给的样例,compare(a, b)应按照如下规则运行:
1. 如果a包含的字符数量少于b,返回True.
2. 如果b包含的字符数量少于a,返回False.
3. 逐字符比较a和b,根据compare2(a, b)的返回值:如果为Same继续比较,否则返回compare2的返回值.
4. 如果a、b相同,返回True.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-19
晕, 全部转成asc码, 然后相加 ,以这个为索引,对索引一次性排序得出结果
第2个回答  2011-08-19
凡是排序算法都要有一个确定顺序先后的方法,在排序过程都要借助这个方法来确定先后。
你可以先做个函数compare(a, b),如果按照规则a排在b前则返回True否则False,然后再用冒泡法来做排序。

貌似还要有字符间比较的方法compare2(a, b)

根据你给的样例,compare(a, b)应按照如下规则运行:
1. 如果a包含的字符数量少于b,返回True.
2. 如果b包含的字符数量少于a,返回False.
3. 逐字符比较a和b,根据compare2(a, b)的返回值:如果为Same继续比较,否则返回compare2的返回值.
4. 如果a、b相同,返回True.