索引存储模型-二分查找
生活随笔
收集整理的這篇文章主要介紹了
索引存储模型-二分查找
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
雙十一過去之后,你女朋友跟你玩了一個(gè)猜數(shù)字的游戲。
猜猜我昨天買了多少錢,給你五次機(jī)會(huì)。
10000?低了。30000?高了。接下來你會(huì)猜多少?
20000。為什么你不猜11000,也不猜29000 呢?
其實(shí)這個(gè)就是二分查找的一種思想,也叫折半查找,每一次,我們都把候選數(shù)據(jù)縮小了一半。如果數(shù)據(jù)已經(jīng)排過序的話,這種方式效率比較高。
所以第一個(gè),我們可以考慮用有序數(shù)組作為索引的數(shù)據(jù)結(jié)構(gòu)。
有序數(shù)組的等值查詢和比較查詢效率非常高,但是更新數(shù)據(jù)的時(shí)候會(huì)出現(xiàn)一個(gè)問題,可能要挪動(dòng)大量的數(shù)據(jù)(改變index),所以只適合存儲(chǔ)靜態(tài)的數(shù)據(jù)。
為了支持頻繁的修改,比如插入數(shù)據(jù),我們需要采用鏈表。鏈表的話,如果是單鏈表,它的查找效率還是不夠高。
所以,有沒有可以使用二分查找的鏈表呢?
為了解決這個(gè)問題,BST(Binary Search Tree)也就是我們所說的二叉查找樹誕生了。
?
總結(jié)
以上是生活随笔為你收集整理的索引存储模型-二分查找的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么创建一个索引?
- 下一篇: 二叉查找树(BST Binary Sea