在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

跳表是用來干什么的

算法與數據結構 ? 來源:后端技術小牛說 ? 作者:后端技術小牛說 ? 2021-11-21 11:20 ? 次閱讀

跳表這一數據結構,已經成為了Redis面試的高頻考點。前兩年沒這么卷的時候,可能大家從開始學習,到拿到大廠offer這一過程,都可能沒聽說過跳表這一數據結構。

那什么是跳表呢?它是用來干啥的?AVL樹紅黑樹知道吧,對,跳表跟他干的事情差不多。我舉個例子大家就明白了。假設目前有一個有序數列:

[2, 11,22, 33, 44, 52, 63]

我們想基于單鏈表的思想,設計一個數據結構,實現查找時間復雜度為O(logn)。單鏈表的話,它的結構長這個樣子。

當然這個結構,查找時間復雜度妥妥的O(n),那咋改呢?

那換個問法:一般做算法題,手撕代碼面試的時候,當咱寫了個時間復雜度為O(n)的解法,面試官搖搖頭,問你有沒有更好的方法,你會怎么做?

常見復雜度O(nlogn) O(n) O(logn) O(1),要優化,一步步來的話,只能上O(logn)了,那復雜度logn最常見的算法是哪個?當然是二分!

思路對了,那對著鏈表,咋把二分思想融合進去呢?

要不單鏈表指針這邊動動刀子?讓指針除了指向后面元素,還能越過幾個節點,指向更后面元素?類似二叉查找樹?先來看看這個數組對應的二叉查找樹長什么樣。

當然,由于我們的結構是單鏈表,所以只能有由小值,指向大值,這個二叉樹得改改。

好像有點意思在里面了,再把原先單鏈表的性質加上。

走線有點凌亂,按單鏈表的布局顯示方式改改:(值得注意的是,我們需要新建一個數組項,每個數組項存儲一個指針,指向剛剛二叉搜索樹每一層最左側的節點)

(咋感覺越看越像B+樹了(霧))

來看個查找邏輯吧:

當查找到的結點保存的數,比要查找的數小時,跳表就會繼續訪問該層上的下一個結點。

當不滿足時,跳表就會用到當前查找到的結點的指針數組的下一層指針,然后沿著下一層指針繼續查找。對于這種數據結構,我們需要從上往下依次查詢三個鏈表,比如我們想查大于35的數字。

首先按左側數組第一個找,發現中間節點是33,比較一下比35小。

發現33比35小,跳下一個節點。

發現該節點是Null,跳33的下一層節點。

發現52比35大,再跳下一層節點。

發現44比35大,跳下一層節點,但由于這是最后一層節點,即44是第一個比33大的數,滿足最終條件,就找到了第一個比35大的數字。

我們知道,二叉平衡樹,如果設計插入操作,會特別特別麻煩。對于由二叉平衡樹思想改的跳表也是如此,對于我們這邊的情況,每增加,或者減少一個新節點,每個節點的高度都需要變化。。那有沒有高人改進呢?

既然把二叉平衡樹改成這四不像了,為啥再不改改,能不能讓他不平衡的同時,還能保證查找效率?

說實話,還真可以,來看看這種跳表。

雖然這個跳表跟咱剛剛講的跳表比起來,奇形怪狀的,但按剛剛的查找思路,還是能做比較好的查詢工作的。

而且既然表都長這么奇形怪狀了,那添加或者刪新元素,其他節點高度不變問題也不大了。

而且驚人的是,如果我們對新插入節點的高度進行隨機產生(每次隨機大于p,接著往上加高度,小于p停下來),然后別的節點高度保持不變,查找效率還是為O(logn),不會出現像二叉查找樹那種直接退化成O(logn)的情況。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7233

    瀏覽量

    90833
  • Redis
    +關注

    關注

    0

    文章

    382

    瀏覽量

    11266

原文標題:什么?跳表都不知道的你還敢去面BAT!

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    綜合配線柜是干什么的

    綜合配線柜(也稱為綜合布線柜或綜合布線系統配線柜)是一種在多個領域中發揮關鍵作用的設備。以下是關于綜合配線柜的詳細介紹: 一、主要作用 集中管理與控制: 綜合配線柜能夠集中管理和控制網絡或電力系統中的線纜和連接設備。通過將各種線纜(如網線、光纖、電話線、電源線等)集中在一個柜子中,可以方便地進行線纜的接入、分配、調度和維護,提高管理效率和便捷性。 保護線纜和設備: 綜合配線柜提供了對線纜和連接設備的物理保護。合
    的頭像 發表于 03-11 11:08 ?269次閱讀

    gtta光纜是干什么的

    GTTA光纜是一種特定類型的通信光纜,主要用于滿足光學、機械或環境的性能規范,并實現光信號的傳輸。以下是對GTTA光纜的詳細解釋: 一、主要用途 GTTA光纜作為寬帶接入的物理平臺,在通信網絡中扮演著重要角色。它主要用于室外通信,如饋線和配線等,特別是在接入網中。此外,它還可以用于管道、非金屬自承架空等常規敷設方式,以及樓道內豎井布線。 二、結構特點 纜芯:光纜的纜芯由一定數量的光纖組成,這些光纖按照一定方式排列并形成纜
    的頭像 發表于 03-06 10:21 ?248次閱讀

    如果需要使用DMD進行成像控制,需要用到哪些部件?

    我想問一下,如果需要使用DMD進行成像控制,需要用到哪些部件?是只需要控制板和DMD芯片么?那么評估模塊是用來干什么的呢?
    發表于 02-28 06:40

    PLM項目管理系統主要干什么?制造業企業的PLM應用與效益

    在制造業的數字化轉型浪潮中,PLM(Product Lifecycle Management,產品全生命周期管理)項目管理系統扮演著至關重要的角色。那么,PLM項目管理系統主要干什么呢?簡而言之
    的頭像 發表于 12-04 11:19 ?1159次閱讀
    PLM項目管理系統主要<b class='flag-5'>干什么</b>?制造業企業的PLM應用與效益

    在ads1261的通用c語言例程中的390行的if是用來區分什么的呢?

    你好我想知道在ads1261的通用c語言例程中的390行的if是用來區分什么的呢,在讀取數據中什么情況下取ff,什么情況寫取00呢
    發表于 11-27 07:58

    TLC555這個電路的二極管是干什么用的,它是從哪來的?

    就這個電路二極管不知道干什么用的,它是從哪來的? 仿真結果跟官方的不一樣
    發表于 11-08 15:37

    音頻子系統主要是用來什么的,可以用來做PCM編碼器嗎?

    請問,音頻子系統主要是用來什么的,可以用來做PCM編碼器嗎?支持PCM編碼輸出嗎?
    發表于 11-07 07:38

    安泰功率放大器是干什么的

    功率放大器是電子設備中一種非常重要的器件,主要用來將輸入的電信號轉換成更大功率的輸出信號。它在各種電子設備中都扮演著至關重要的角色,包括音頻設備、通信設備、電源系統、汽車電子以及工業控制系統等。下面
    的頭像 發表于 10-29 15:46 ?282次閱讀
    安泰功率放大器是<b class='flag-5'>干什么的</b>

    電視上的usb是用來干什么的

    電視上的USB接口是一個非常實用的功能,它允許用戶通過USB設備(如U盤、移動硬盤等)直接播放存儲在這些設備上的多媒體文件,如視頻、音頻、圖片等。此外,USB接口還可以用來為電視提供額外的功能,比如
    的頭像 發表于 10-12 10:06 ?6708次閱讀

    VCA821給出的AGC電路,出來的波形奇奇怪怪的,為什么?

    我做的VCA821給出的AGC電路,給的信號50mV,頻率10kHz,出來的波形奇奇怪怪的,有78MHz。請問這是什么原因,自激了嗎?還有,圖中的Vref是干什么的? 以下是我的原理圖和PCB,能否給出一些修改意見
    發表于 08-29 08:24

    用TINA仿真LMH6505,TINA-TI如何導入SPICE模型?

    準備用TINA仿真LMH6505,在官網上下載了LMH6505的PSPice Model。但是解壓后是.MOD文件。在網上沒找到如何導入,求大神指教。 1、工具菜單下的新建宏是干什么的,生成的TSM文件是用來仿真的嗎? 2、為什么TINA官網下的文件很多都是.LIB文件
    發表于 08-22 08:04

    浙江氣密性檢測設備主要是用來干什么的

    氣密性檢測設備主要用于檢測產品的密封性能,以確保產品的性能、安全或使用壽命不會受到泄漏或滲水的影響。具體而言,氣密性檢測設備的主要用途包括:(1)確保產品質量:通過測試,我們可以判斷產品是否符合預期的密封性能要求,及時發現和消除生產過程中的泄漏問題,防止不合格產品進入市場,從而確保產品質量。(2)預防安全事故:對于一些特殊行業,如新能源和醫療器械,產品泄漏可
    的頭像 發表于 08-20 14:05 ?416次閱讀
    浙江氣密性檢測設備主要是<b class='flag-5'>用來</b><b class='flag-5'>干什么的</b>

    LM318 COMP管腳是什么引腳,干什么用的?

    LM318 COMP 管腳是什么引腳,干什么用的,PSPICEFORTI 里面沒有318的COMP管腳在怎么應用
    發表于 07-31 07:45

    音圈電機是用來干什么的

    音圈電機(Voice Coil Motor,簡稱VCM)是一種利用電磁原理將電能轉換為直線運動的電機。它廣泛應用于各種精密定位系統和驅動設備中,如硬盤驅動器、光盤驅動器、光學掃描儀、精密定位臺等。本文將詳細介紹音圈電機的工作原理、結構特點、應用領域以及發展趨勢。 一、音圈電機的工作原理 音圈電機的工作原理基于法拉第電磁感應定律和洛倫茲力定律。當電流通過線圈時,線圈周圍產生磁場。這個磁場與永磁體產生的磁場相互作用,產生一個力,使
    的頭像 發表于 06-13 11:03 ?1013次閱讀

    串口的空閑字符是用來激活空閑中斷的嗎?

    發送空閑幀。 \" [size=13.3333px]請問一般這個東西是怎么用的? [size=13.3333px]用來干什么的? [size=13.3333px]不知道該怎么激活這個中斷,有傳統庫的demo嗎?
    發表于 05-11 07:28
    主站蜘蛛池模板: 亚洲三级黄 | 久久伊人成人网 | 国模私拍一区二区三区 | 自偷自拍亚洲欧美清纯唯美 | 亚洲大香伊人蕉在人依线 | 亚欧乱色束缚一区二区三区 | 国产成人mv 在线播放 | 97色在线播放 | 日本天堂网在线观看 | 乱高h辣黄文np公交车 | 欧美人成一本免费观看视频 | xx毛片| 成片免费的禁v影片 | 黄免费看| 男人不识本网站上遍色站也枉然 | 一本二卡三卡四卡乱码二百 | 欧美四虎影院 | 91av视频 | 中文字幕 视频一区 | 国产午夜精品福利久久 | 久久青草免费91观看 | 日日干狠狠干 | 黄色亚洲 | 亚洲邪恶天堂影院在线观看 | 国产农村三片免费网站 | 欧美卡一卡二卡新区网站 | 天天干夜夜夜 | www.毛片com| 亚洲一区二区精品视频 | 亚洲一本高清 | 天天精品视频在线观看资源 | 成在线人永久免费播放视频 | 亚洲你懂得 | 午夜视频日本 | 特黄色片| 丁香花在线影院观看在线播放 | 色九| 天天综合五月天 | 高清一级做a爱视频免费 | 色狠狠色综合久久8狠狠色 色狠狠网 | 黄色网址视频在线观看 |