91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

跳表是用來(lái)干什么的

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:后端技術(shù)小牛說(shuō) ? 作者:后端技術(shù)小牛說(shuō) ? 2021-11-21 11:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

跳表這一數(shù)據(jù)結(jié)構(gòu),已經(jīng)成為了Redis面試的高頻考點(diǎn)。前兩年沒這么卷的時(shí)候,可能大家從開始學(xué)習(xí),到拿到大廠offer這一過程,都可能沒聽說(shuō)過跳表這一數(shù)據(jù)結(jié)構(gòu)。

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

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

我們想基于單鏈表的思想,設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)查找時(shí)間復(fù)雜度為O(logn)。單鏈表的話,它的結(jié)構(gòu)長(zhǎng)這個(gè)樣子。

當(dāng)然這個(gè)結(jié)構(gòu),查找時(shí)間復(fù)雜度妥妥的O(n),那咋改呢?

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

常見復(fù)雜度O(nlogn) O(n) O(logn) O(1),要優(yōu)化,一步步來(lái)的話,只能上O(logn)了,那復(fù)雜度logn最常見的算法是哪個(gè)?當(dāng)然是二分!

思路對(duì)了,那對(duì)著鏈表,咋把二分思想融合進(jìn)去呢?

要不單鏈表指針這邊動(dòng)動(dòng)刀子?讓指針除了指向后面元素,還能越過幾個(gè)節(jié)點(diǎn),指向更后面元素?類似二叉查找樹?先來(lái)看看這個(gè)數(shù)組對(duì)應(yīng)的二叉查找樹長(zhǎng)什么樣。

當(dāng)然,由于我們的結(jié)構(gòu)是單鏈表,所以只能有由小值,指向大值,這個(gè)二叉樹得改改。

好像有點(diǎn)意思在里面了,再把原先單鏈表的性質(zhì)加上。

走線有點(diǎn)凌亂,按單鏈表的布局顯示方式改改:(值得注意的是,我們需要新建一個(gè)數(shù)組項(xiàng),每個(gè)數(shù)組項(xiàng)存儲(chǔ)一個(gè)指針,指向剛剛二叉搜索樹每一層最左側(cè)的節(jié)點(diǎn))

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

來(lái)看個(gè)查找邏輯吧:

當(dāng)查找到的結(jié)點(diǎn)保存的數(shù),比要查找的數(shù)小時(shí),跳表就會(huì)繼續(xù)訪問該層上的下一個(gè)結(jié)點(diǎn)。

當(dāng)不滿足時(shí),跳表就會(huì)用到當(dāng)前查找到的結(jié)點(diǎn)的指針數(shù)組的下一層指針,然后沿著下一層指針繼續(xù)查找。對(duì)于這種數(shù)據(jù)結(jié)構(gòu),我們需要從上往下依次查詢?nèi)齻€(gè)鏈表,比如我們想查大于35的數(shù)字。

首先按左側(cè)數(shù)組第一個(gè)找,發(fā)現(xiàn)中間節(jié)點(diǎn)是33,比較一下比35小。

發(fā)現(xiàn)33比35小,跳下一個(gè)節(jié)點(diǎn)。

發(fā)現(xiàn)該節(jié)點(diǎn)是Null,跳33的下一層節(jié)點(diǎn)。

發(fā)現(xiàn)52比35大,再跳下一層節(jié)點(diǎn)。

發(fā)現(xiàn)44比35大,跳下一層節(jié)點(diǎn),但由于這是最后一層節(jié)點(diǎn),即44是第一個(gè)比33大的數(shù),滿足最終條件,就找到了第一個(gè)比35大的數(shù)字。

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

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

說(shuō)實(shí)話,還真可以,來(lái)看看這種跳表。

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

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

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

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7335

    瀏覽量

    94809
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    392

    瀏覽量

    12193

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

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    不間斷電源是干什么用的??jī)?yōu)比施一文講透

    ……這些令人懊惱甚至帶來(lái)?yè)p失的瞬間,都與一個(gè)詞有關(guān)——電力中斷。而不間斷電源,正是為解決這些問題而生。今天,優(yōu)比施電源用最通俗易懂的方式,為您講清楚不間斷電源到底是干什
    的頭像 發(fā)表于 03-03 08:48 ?101次閱讀
    不間斷電源是<b class='flag-5'>干什么</b>用的??jī)?yōu)比施一文講透

    lora無(wú)線數(shù)傳電臺(tái)能干什么?5KM數(shù)據(jù)傳輸,代替有線485

    雙向通信,是工業(yè)物聯(lián)網(wǎng)、智慧農(nóng)業(yè)、智慧城市等場(chǎng)景的“無(wú)線串口線”。 一、核心功能(能干什么) 1. 基礎(chǔ)通信能力 - 點(diǎn)對(duì)點(diǎn)透明傳輸:兩個(gè)電臺(tái)配對(duì),串口數(shù)據(jù)原樣無(wú)線轉(zhuǎn)發(fā),替代長(zhǎng)距離RS485/232線纜,無(wú)需改協(xié)議。 - 點(diǎn)對(duì)多點(diǎn)/主從組網(wǎng):一臺(tái)主機(jī)帶多臺(tái)從機(jī),集中
    的頭像 發(fā)表于 02-28 16:37 ?578次閱讀

    新手求問,單片機(jī)的引腳為什么要接二極管再接5v?

    如圖所示的幾個(gè)4148是干什么用的
    發(fā)表于 01-27 14:42

    相控陣芯片頻段到底如何選擇

    相控陣技術(shù)早已從軍事雷達(dá)滲透到了衛(wèi)星通信、雷達(dá)感測(cè)、氣象探測(cè)等多個(gè)領(lǐng)域。但你知道嗎?決定相控陣芯片 “能干什么” 的核心因素,并非算力,而是它工作的頻段。
    的頭像 發(fā)表于 01-26 09:34 ?505次閱讀

    劃片機(jī)是干什么用的

    劃片機(jī)是干什么用的?在晶圓加工場(chǎng)景中,它也常被稱為晶圓切割機(jī),是半導(dǎo)體制造后道工藝中的核心設(shè)備,其核心用途是將完成前道電路制造(如光刻、刻蝕、沉積等)的整片晶圓,沿預(yù)設(shè)的空白切割道
    的頭像 發(fā)表于 01-12 16:33 ?609次閱讀
    劃片機(jī)是<b class='flag-5'>干什么</b>用的

    shell基本介紹及常用命令之shell基本介紹

    Shell是什么?我們?cè)趧傞_始接觸Linux的時(shí)候,經(jīng)常會(huì)聽到工程師提到Shell這個(gè)詞,剛開始不知道這是個(gè)干什么的,簡(jiǎn)單的說(shuō),它是一個(gè)應(yīng)用,接收用戶命令,調(diào)用相應(yīng)的內(nèi)核接口函數(shù)或應(yīng)用程序,并輸出
    發(fā)表于 09-28 09:05

    加固計(jì)算機(jī)是用來(lái)干什么的?

    加固計(jì)算機(jī)是一種專門為復(fù)雜環(huán)境和特殊行業(yè)應(yīng)用設(shè)計(jì)的高性能設(shè)備。它不僅具備常規(guī)電腦的數(shù)據(jù)處理和運(yùn)算功能,更在結(jié)構(gòu)設(shè)計(jì)、防護(hù)等級(jí)和硬件配置方面做了全面優(yōu)化。例如,它的外殼通常采用鎂鋁合金或高強(qiáng)度復(fù)合材料,具有防塵、防水、防摔的特性,內(nèi)部還經(jīng)過防震加固處理,確保在運(yùn)輸、跌落或長(zhǎng)時(shí)間移動(dòng)中依舊保持穩(wěn)定運(yùn)行。某些加固計(jì)算機(jī)甚至符合軍用標(biāo)準(zhǔn),能夠適應(yīng)極端環(huán)境和高強(qiáng)度任務(wù)需求。
    的頭像 發(fā)表于 08-22 09:55 ?567次閱讀

    充電樁為什么離不開電流傳感器?一篇文章帶你了解清楚!

    扮演著非常重要的角色。那么,電流傳感器在充電樁中到底是干什么的?怎么選才靠譜?今天這篇文章,我們就來(lái)聊聊這些你可能一直想知道的問題。電流傳感器在充電樁中起什么作用
    的頭像 發(fā)表于 08-07 10:23 ?5123次閱讀
    充電樁為什么離不開電流傳感器?一篇文章帶你了解清楚!

    晶振是干什么用的

    在電子設(shè)備如繁星般密布于生活各個(gè)角落的當(dāng)今時(shí)代,從小巧的智能手表到龐大的服務(wù)器,從便捷的手機(jī)到家中的智能家電,有一種常常被忽視卻起著關(guān)鍵作用的元件——晶振。它體積微小,存在感看似不強(qiáng),卻宛如電子設(shè)備的“心臟起搏器”,默默把控著節(jié)奏,維系著整個(gè)系統(tǒng)穩(wěn)定、精準(zhǔn)地運(yùn)行。 提供精準(zhǔn)時(shí)鐘信號(hào) 晶振最基礎(chǔ)且核心的用途,便是生成高度精準(zhǔn)的時(shí)鐘信號(hào)。在數(shù)字電路的世界里,眾多芯片、處理器如同訓(xùn)練有素的士兵,需要依據(jù)統(tǒng)一
    的頭像 發(fā)表于 06-30 10:44 ?1125次閱讀

    主板上的顯卡的特點(diǎn)是什么?能用來(lái)干什么?

    在計(jì)算機(jī)硬件系統(tǒng)中,顯卡是負(fù)責(zé)處理和輸出圖像的關(guān)鍵組件。安裝在主板上的顯卡主要分為集成顯卡和獨(dú)立顯卡,它們各自具備獨(dú)特的特點(diǎn),并在不同場(chǎng)景下發(fā)揮著重要作用。
    的頭像 發(fā)表于 05-22 09:21 ?1106次閱讀

    光纖odf架干什么用的

    光纖ODF架(Optical Distribution Frame,光纖配線架)是光纖通信網(wǎng)絡(luò)中用于光纖配線與管理的核心設(shè)備,主要承擔(dān)光纖線路的連接、分配、調(diào)度及保護(hù)功能。以下從其核心作用、應(yīng)用場(chǎng)景及技術(shù)優(yōu)勢(shì)三方面展開說(shuō)明: 一、核心功能 光纖熔接與端接 提供熔接盤、適配器面板等模塊,支持光纖熔接(永久連接)或快速端接(預(yù)制成端跳線),實(shí)現(xiàn)主干光纜與分支光纜的可靠連接。 類比:如同電路中的“接線板”,將多根光纖有序整合。 線路分配與調(diào)度 通過適配器面板
    的頭像 發(fā)表于 05-21 13:53 ?2020次閱讀
    光纖odf架<b class='flag-5'>干什么</b>用的

    芯片前端設(shè)計(jì)與后端設(shè)計(jì)的區(qū)別

    前端設(shè)計(jì)(Front-end Design):聚焦于電路的邏輯功能實(shí)現(xiàn)。本質(zhì)上是在“紙上”設(shè)計(jì)電路,包括芯片要“干什么”,要“如何運(yùn)算”。
    的頭像 發(fā)表于 05-16 14:56 ?1313次閱讀

    繼電保護(hù)是用來(lái)什么的?

    繼電保護(hù)是電力系統(tǒng)中的“安全衛(wèi)士”,其核心任務(wù)是?快速檢測(cè)故障并隔離故障區(qū)域?,確保電力設(shè)備免遭損壞、防止停電范圍擴(kuò)大,同時(shí)維護(hù)電網(wǎng)的穩(wěn)定運(yùn)行。在現(xiàn)代電力系統(tǒng)中,繼電保護(hù)裝置如同人體的免疫系統(tǒng),能夠在毫秒級(jí)時(shí)間內(nèi)識(shí)別異常并采取行動(dòng),是保障供電安全的核心技術(shù)之一。 一、繼電保護(hù)的四大核心功能 ?故障檢測(cè)? 實(shí)時(shí)監(jiān)測(cè)電流、電壓、頻率等電氣參數(shù),精準(zhǔn)識(shí)別短路、過載、接地故障等異常狀態(tài)。例如: 短路故障:電流驟增至正常值的數(shù)倍至數(shù)十倍。 接地故障:中性點(diǎn)電壓偏移或零序電流異常。 ?故障隔離? 通過控制斷路器在?20-100毫秒內(nèi)?切斷故障線路,避免故障蔓延。例如: 輸電線路發(fā)生短路時(shí),距離保護(hù)裝置可迅速定位故障點(diǎn)并跳閘。 ?告警與記錄? 觸發(fā)聲光報(bào)警,并記錄故障波形、動(dòng)作時(shí)間等數(shù)據(jù),為后續(xù)故障分析提供依據(jù)。 ?系統(tǒng)自愈支持? 配合自動(dòng)化設(shè)備(如重合閘裝置),在故障清除后嘗試恢復(fù)供電,減少停電時(shí)間。 二、繼電保護(hù)的組成與工作原理 ?系統(tǒng)架構(gòu) ?組件 ?功能? ?測(cè)量元件 采集電流互感器(CT)、電壓互感器(PT)信號(hào) ?邏輯判斷單元 分析參數(shù)是否符合故障特征(如過流、差動(dòng)) ?執(zhí)行元件 驅(qū)動(dòng)斷路器或發(fā)信裝置動(dòng)作 ? ?典型保護(hù)原理? ?過電流保護(hù)?:檢測(cè)電流超過設(shè)定閾值(如1.2倍額定電流),適用于配電網(wǎng)線路。 ?差動(dòng)保護(hù)?:比較設(shè)備兩端電流差值,若差值超限則判定內(nèi)部故障(常用于變壓器、發(fā)電機(jī))。 ?距離保護(hù)?:通過阻抗計(jì)算定位故障點(diǎn)位置,適用于長(zhǎng)距離輸電線路。 三、繼電保護(hù)的應(yīng)用場(chǎng)景 ?發(fā)電環(huán)節(jié)? 發(fā)電機(jī)保護(hù):定子接地保護(hù)、轉(zhuǎn)子過負(fù)荷保護(hù)、失磁保護(hù)等。 案例:某水電站因差動(dòng)保護(hù)動(dòng)作,0.1秒內(nèi)隔離發(fā)電機(jī)內(nèi)部短路,避免機(jī)組燒毀。 ?輸電與變電環(huán)節(jié)? 輸電線路:縱聯(lián)保護(hù)、光纖差動(dòng)保護(hù),保障跨區(qū)域電網(wǎng)安全。 變壓器:瓦斯保護(hù)(非電量)、比率制動(dòng)差動(dòng)保護(hù),防止絕緣油分解或繞組故障。 ?配電環(huán)節(jié)? 配網(wǎng)饋線:過流保護(hù)配合自動(dòng)重合閘,減少用戶停電時(shí)間。 數(shù)據(jù):90%的配電故障可在300毫秒內(nèi)隔離并恢復(fù)供電。 四、繼電保護(hù)的技術(shù)演進(jìn) ?從電磁式到數(shù)字化? ?早期電磁繼電器?:依靠機(jī)械觸點(diǎn)動(dòng)作,響應(yīng)速度慢(>100ms),維護(hù)頻繁。 ?微機(jī)保護(hù)裝置?:集成DSP芯片,支持多判據(jù)融合計(jì)算,動(dòng)作時(shí)間縮短至20ms以內(nèi)。 ?智能化升級(jí)? ?廣域保護(hù)系統(tǒng)?:基于5G通信實(shí)時(shí)共享電網(wǎng)狀態(tài),實(shí)現(xiàn)跨區(qū)域協(xié)同控制。 ?AI故障預(yù)測(cè)?:利用機(jī)器學(xué)習(xí)分析歷史數(shù)據(jù),提前預(yù)警絕緣老化風(fēng)險(xiǎn)。 ?挑戰(zhàn)與突破? 新能源并網(wǎng):光伏、風(fēng)電的波動(dòng)性要求保護(hù)裝置具備自適應(yīng)能力。 解決方案:引入“方向性過流保護(hù)”應(yīng)對(duì)分布式電源雙向電流沖擊。 五、總結(jié) 繼電保護(hù)是電力系統(tǒng)安全運(yùn)行的基石,其價(jià)值體現(xiàn)在三個(gè)方面: ?經(jīng)濟(jì)性?:減少設(shè)備損壞帶來(lái)的巨額維修成本(如一臺(tái)500kV變壓器損壞損失超千萬(wàn)元)。 ?可靠性?:保障99.99%以上的供電可用性,支撐現(xiàn)代社會(huì)穩(wěn)定運(yùn)轉(zhuǎn)。 ?智能化?:隨著數(shù)字孿生、邊緣計(jì)算等技術(shù)的融合,繼電保護(hù)正從“被動(dòng)響應(yīng)”邁向“主動(dòng)防御”。 未來(lái),繼電保護(hù)將與能源互聯(lián)網(wǎng)深度結(jié)合,成為構(gòu)建新型電力系統(tǒng)的核心防線。
    發(fā)表于 05-06 10:32

    請(qǐng)問圖片中電路板的功能?

    朋友們幫看看,這電路模塊是干什么用的?
    發(fā)表于 04-14 09:40

    綜合配線柜是干什么的

    綜合配線柜(也稱為綜合布線柜或綜合布線系統(tǒng)配線柜)是一種在多個(gè)領(lǐng)域中發(fā)揮關(guān)鍵作用的設(shè)備。以下是關(guān)于綜合配線柜的詳細(xì)介紹: 一、主要作用 集中管理與控制: 綜合配線柜能夠集中管理和控制網(wǎng)絡(luò)或電力系統(tǒng)中的線纜和連接設(shè)備。通過將各種線纜(如網(wǎng)線、光纖、電話線、電源線等)集中在一個(gè)柜子中,可以方便地進(jìn)行線纜的接入、分配、調(diào)度和維護(hù),提高管理效率和便捷性。 保護(hù)線纜和設(shè)備: 綜合配線柜提供了對(duì)線纜和連接設(shè)備的物理保護(hù)。合
    的頭像 發(fā)表于 03-11 11:08 ?1308次閱讀