[wizs] 字串比大小程式

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間17年前 (2009/02/06 02:14), 編輯推噓1(100)
留言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
文章代碼(AID): #19YooV1m (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #19YooV1m (mud_sanc)