塊狀鏈表

介紹

有時候我們需要設(shè)計這樣一種數(shù)據(jù)結(jié)構(gòu):它能快速在要求位置插入或者刪除一段數(shù)據(jù)。先考慮兩種簡單的數(shù)據(jù)結(jié)構(gòu):數(shù)組和鏈表高氮。數(shù)組的優(yōu)點(diǎn)是能夠在O(1)的時間內(nèi)找到所要執(zhí)行操作的位置,但其缺點(diǎn)是無論是插入或刪除都要移動之后的所有數(shù)據(jù),復(fù)雜度是O(n)的。鏈表優(yōu)點(diǎn)是能夠在O(1)的時間內(nèi)插入和刪除一段數(shù)據(jù)嚎货,但缺點(diǎn)是在尋找操作位置時,卻要遍歷整個鏈表蔫浆,復(fù)雜度同樣時O(n)的殖属。這兩種數(shù)據(jù)結(jié)構(gòu)各有優(yōu)缺點(diǎn),我們可以把數(shù)組和鏈表的優(yōu)點(diǎn)結(jié)合來瓦盛,這就構(gòu)成了一個新的數(shù)據(jù)結(jié)構(gòu):塊狀鏈表洗显,結(jié)合數(shù)組和鏈表的優(yōu)缺點(diǎn)的塊狀鏈表其各種操作的時間復(fù)雜度均為O(sqrt(n))。
從總體上來看原环,維護(hù)一個鏈表挠唆,鏈表中的每個單元中包含一段數(shù)組,以及這個數(shù)組中的數(shù)據(jù)個數(shù)嘱吗。每個鏈表中的數(shù)據(jù)連起來就是整個數(shù)據(jù)玄组。設(shè)鏈表長度為a,每個單元中的數(shù)組長度是b谒麦。無論是插入或刪除俄讹,在尋址時要遍歷整個鏈表,復(fù)雜度是O(a)绕德; 對于插入和刪除操作患膛,需要移動數(shù)組的元素,所以總的復(fù)雜度是O(a+b)耻蛇。因為ab=n踪蹬,取a=b=√n胞此,則總的復(fù)雜度是O(√n)。
問題是如何維護(hù)a和b大致等于√n跃捣?
在執(zhí)行插入操作后漱牵,如果當(dāng)前單元中的數(shù)據(jù)個數(shù)>2√n,則將當(dāng)前單元分割成兩個新單元枝缔,每個單元中的數(shù)據(jù)個數(shù)保持為√n布疙。在執(zhí)行刪除操作后,如果當(dāng)前單元和當(dāng)前單元的下一個單元的數(shù)據(jù)個數(shù)和<√n,則將兩個單元合并成一個新單元众弓。執(zhí)行上述維護(hù)操作需要移動數(shù)組中的數(shù)據(jù)详羡,復(fù)雜度是O(b),對于單元的分割和合并均是O(1)的碴开,總的復(fù)雜度是O(b)的。這樣,維護(hù)操作并不會使總復(fù)雜度增加发钝。最終得到一個復(fù)雜度是O(√n)的數(shù)據(jù)結(jié)構(gòu)。

在STL中波闹,deque內(nèi)部就是使用塊狀鏈表保證在首尾能夠快速插入酝豪。并能夠以索引的方式查找元素。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末精堕,一起剝皮案震驚了整個濱河市孵淘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌歹篓,老刑警劉巖瘫证,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庄撮,居然都是意外死亡背捌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門洞斯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毡庆,“玉大人,你說我怎么就攤上這事烙如∶纯梗” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵厅翔,是天一觀的道長乖坠。 經(jīng)常有香客問我,道長刀闷,這世上最難降的妖魔是什么熊泵? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任仰迁,我火速辦了婚禮,結(jié)果婚禮上顽分,老公的妹妹穿的比我還像新娘徐许。我一直安慰自己,他們只是感情好卒蘸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布雌隅。 她就那樣靜靜地躺著,像睡著了一般缸沃。 火紅的嫁衣襯著肌膚如雪恰起。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天趾牧,我揣著相機(jī)與錄音检盼,去河邊找鬼。 笑死翘单,一個胖子當(dāng)著我的面吹牛吨枉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哄芜,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼貌亭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了认臊?” 一聲冷哼從身側(cè)響起圃庭,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎美尸,沒想到半個月后冤议,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡师坎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年恕酸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胯陋。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕊温,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遏乔,到底是詐尸還是另有隱情义矛,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布盟萨,位于F島的核電站凉翻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捻激。R本人自食惡果不足惜制轰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一前计、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垃杖,春花似錦男杈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至彩库,卻和暖如春肤无,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骇钦。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工舅锄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人司忱。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像畴蹭,于是被迫代替她去往敵國和親坦仍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容