作者laechan (小太保)
看板mud_sanc
标题[wizs] 字串比大小程式
时间Fri Feb 6 02:14:52 2009
假设有三个字串
nobu
laechan
quest
理论上三个字串比大小後排序出来的结果如下..
laechan quest
nobu nobu
quest laechan
简单的排序写法如下...
int sort_str(string s1,string s2)
{
int i;
while(i+1)
{
if(s1[i] > s2[i])
return 1;
else if(s1[i] < s2[i])
return -1;
else
i=i+1;
}
}
int test()
{
mixed tmps=({"nobu","laechan","quest"});
tmps=sort_array(tmps,"sort_str",this_object());
write("排序後的结果: "+implode(tmps,",")+"\n");
return 1;
}
上面的用意就是,它先从字串的第一个字母开始比,一直比到
有大小为止,可以这麽写的原因是..
一、因为比的是玩家 id,理论上每个玩家的 id 都不一样,所
以比到最後一定比的出大小。
二、通常比 id,大部份的情况比前 1~3 个 id 字母就可以比
出大小。
把上面的程式改写一下就可以比线上玩家的 id..
int sort_names(object p1,object p2)
{
int i;
string s1,s2;
s1=p1->query("name");
s2=p2->query("name");
while(i+1)
{
if(s1[i] > s2[i])
return 1;
else if(s1[i] < s2[i])
return -1;
else
i=i+1;
}
}
int test()
{
mixed tmps=users();
tmps=sort_array(tmps,"sort_names",this_object());
write("排序後的结果: "+implode(tmps,",")+"\n");
return 1;
}
这样就可以把玩家的 id 依字串大小 sort。
上面的程式还可以考量系统负担再改写,留给各位 wiz 思考。
不过考量到可能出现的错误,则也必须再改的完整一点,这个
各位 wiz 也可以思考。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.109.158
※ 编辑: laechan 来自: 118.170.109.158 (02/06 02:18)
1F:推 AresMars :真难得有我看得懂的程式.....(逃) 02/06 03:42