當前智能手機操作系統使用什麼通用算法從聯繫人列表中搜索姓名?在手機中搜索電話號碼的算法?
聯繫人列表不是很大,但仍然是,當我們鍵入'A'時,所有以'A'開頭的名字都很容易出現。 'A'後跟'B',會帶來像Abe,Abott等名字,
當前智能手機操作系統使用什麼通用算法從聯繫人列表中搜索姓名?在手機中搜索電話號碼的算法?
聯繫人列表不是很大,但仍然是,當我們鍵入'A'時,所有以'A'開頭的名字都很容易出現。 'A'後跟'B',會帶來像Abe,Abott等名字,
快速做到這一點的一種方法是使用trie(http://en.wikipedia.org/wiki/Trie) - 基本上,您會將所有密鑰存儲在樹中其中根節點表示一個空輸入,並且您輸入的每個字符都會將分支引導至一個子樹,該子樹包含所有以您迄今爲止放置的字母集合開頭的所有名稱。在這裏使用這種技術進行自動完成有一個很好的例子:http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
在您的示例中,輸入'A'將沿着標記爲'A'的分支轉到以「A」開頭的所有名稱的子樹。從那裏輸入'B'將沿着標有'B'的分支到達下一個子樹,該子樹將包含所有'AB'名稱。向樹中添加新名稱遵循相同的流程 - 按照名稱中每個字母的正確分支(添加尚不存在的新分支),直到到達名稱的末尾,此時將其添加爲葉。
謝謝。這是一種常用的方法/算法嗎? – user373215
我不確定它是如何在當前手機中完成的(實際上可能會略有不同,取決於聯繫人的存儲方式等),但這通常是這類事情的標準方法。 – Animatinator
謝謝Mr.Animatinator。 – user373215
哪款智能手機操作系統? Android/iphone/symbian/windows/BB?你必須更具體。 – ElKamina
在iOS上分享算法會很棒。 – user373215
爲什麼會有投票?這是一個真正的問題。 – user373215