[wizs] 字串比大小程式
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2009/02/06 02:14)推噓1(1推 0噓 0→)留言1則, 1人參與討論串1/4 (看更多)
假設有三個字串
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)
推
02/06 03:42, , 1F
02/06 03:42, 1F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19