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

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

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

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

數(shù)據(jù)結(jié)構(gòu)與算法簡述

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:后端技術(shù)小牛說 ? 作者:后端技術(shù)小牛說 ? 2022-09-08 11:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡述數(shù)據(jù)結(jié)構(gòu)棧

棧是一種線性表,其限制只能在表尾進行插入或刪除操作。由于該特性又稱為后進先出的線性表。

簡述數(shù)據(jù)結(jié)構(gòu)隊列

隊列是一種先進先出的線性表。其限制只能在線性表的一端進行插入,而在另一端刪除元素。

簡述二叉樹

二叉樹是n個有限元素的集合,該集合或者為空、或者由一個稱為根(root)的元素及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成。

簡述滿二叉樹

一個二叉樹,如果每一個層的結(jié)點數(shù)都達到最大值,則這個二叉樹就是滿二叉樹。

簡述完全二叉樹

一棵深度為k的有n個結(jié)點的二叉樹,對樹中的結(jié)點按從上至下、從左到右的順序進行編號,如果編號為i(1≤i≤n)的結(jié)點與滿二叉樹中編號為i的結(jié)點在二叉樹中的位置相同,則這棵二叉樹稱為完全二叉樹。

簡述二叉樹的前中后序遍歷算法

前序遍歷:若二叉樹為空樹,則執(zhí)行空邏輯,否則:

訪問根節(jié)點

遞歸前序遍歷左子樹

遞歸前序遍歷右子樹

中序遍歷:若二叉樹為空樹,則執(zhí)行空邏輯,否則:

遞歸中序遍歷左子樹

訪問根節(jié)點

遞歸中序遍歷右子樹

后序遍歷:若二叉樹為空樹,則執(zhí)行空邏輯,否則:

遞歸后序遍歷左子樹

遞歸后序遍歷右子樹

訪問根節(jié)點

簡述解決Hash沖突的方法

開放定址法:當(dāng)發(fā)生哈希沖突時,如果哈希表未被裝滿,那么可以把這個值存放到?jīng)_突位置中的下一個空位置中去

鏈地址法:對相同的哈希地址,設(shè)置一個單鏈表,單鏈表內(nèi)放的都是哈希沖突元素。

簡述AVL樹

AVL樹是一種改進版的搜索二叉樹,其引入平衡因子(左子支高度與右子支高度之差的絕對值),通過旋轉(zhuǎn)使其盡量保持平衡。任何一個節(jié)點的左子支高度與右子支高度之差的絕對值不超過1。

簡述紅黑樹

紅黑樹本身是有2-3樹發(fā)展而來,紅黑樹是保持黑平衡的二叉樹,其查找會比AVL樹慢一點,添加和刪除元素會比AVL樹快一點。增刪改查統(tǒng)計性能上講,紅黑樹更優(yōu)。紅黑樹主要特征是在每個節(jié)點上增加一個屬性表示節(jié)點顏色,可以紅色或黑色。紅黑樹和 AVL 樹類似,都是在進行插入和刪除時通過旋轉(zhuǎn)保持自身平衡,從而獲得較高的查找性能。紅黑樹保證從根節(jié)點到葉尾的最長路徑不超過最短路徑的 2 倍,所以最差時間復(fù)雜度是 O(logn)。紅黑樹通過重新著色和左右旋轉(zhuǎn),更加高效地完成了插入和刪除之后的自平衡調(diào)整。

簡述穩(wěn)定排序和非穩(wěn)定排序的區(qū)別

穩(wěn)定排序:排序前后兩個相等的數(shù)相對位置不變,則算法穩(wěn)定非穩(wěn)定排序:排序前后兩個相等的數(shù)相對位置發(fā)生了變化,則算法不穩(wěn)定

常見的穩(wěn)定排序算法有哪些

插入排序、冒泡排序、歸并排序

常見的不穩(wěn)定排序算法有哪些

希爾排序、直接選擇排序、堆排序、快速排序

簡述插入排序

插入排序:每一趟將一個待排序記錄按其關(guān)鍵字的大小插入到已排好序的一組記錄的適當(dāng)位置上,直到所有待排序記錄全部插入為止。

排序算法穩(wěn)定。時間復(fù)雜度 O(n2),空間復(fù)雜度 O(1)。

簡述希爾排序

希爾排序:把記錄按下標的一定增量分組,對每組進行直接插入排序,每次排序后減小增量,當(dāng)增量減至 1 時排序完畢。

排序算法不穩(wěn)定。時間復(fù)雜度 O(nlogn),空間復(fù)雜度 O(1)。

簡述直接選擇排序

直接選擇排序:每次在未排序序列中找到最小元素,和未排序序列的第一個元素交換位置,再在剩余未排序序列中重復(fù)該操作直到所有元素排序完畢。

排序算法不穩(wěn)定。時間復(fù)雜度 O(n2),空間復(fù)雜度 O(1)。

簡述堆排序

堆排序:將待排序數(shù)組看作一個樹狀數(shù)組,建立一個二叉樹堆。通過對這種數(shù)據(jù)結(jié)構(gòu)進行每個元素的插入,完成排序工作。

排序算法不穩(wěn)定,時間復(fù)雜度 O(nlogn),空間復(fù)雜度 O(1)。

簡述冒泡排序

冒泡排序:比較相鄰的元素,如果第一個比第二個大就進行交換,對每一對相鄰元素做同樣的工作。

排序算法穩(wěn)定,時間復(fù)雜度 O(n2),空間復(fù)雜度 O(1)。

簡述快速排序

快速排序:隨機選擇一個基準元素,通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,一部分全部小于等于基準元素,一部分全部大于等于基準元素,再按此方法遞歸對這兩部分數(shù)據(jù)進行快速排序。

排序算法不穩(wěn)定,時間復(fù)雜度 O(nlogn),空間復(fù)雜度 O(logn)。

簡述歸并排序

歸并排序:將待排序序列分成兩部分,然后對兩部分分別遞歸排序,最后進行合并。排序算法穩(wěn)定,時間復(fù)雜度都為 O(nlogn),空間復(fù)雜度為 O(n)。

簡述圖

圖是由頂點集合和頂點之間的邊集合組成的一種數(shù)據(jù)結(jié)構(gòu),分為有向圖和無向圖。

有向圖:邊具有方向性

無向圖:邊不具有方向性

簡述鄰接矩陣

用一個二維數(shù)組存放圖頂點間關(guān)系的數(shù)據(jù),這個二維數(shù)組稱為鄰接矩陣。對于無向圖,鄰接矩陣是對稱矩陣

簡述鄰接表

鄰接表是通過鏈表表示圖連接關(guān)系的一種方。對于表頭結(jié)點所對應(yīng)的頂點存在相鄰頂點,則把相鄰頂點依次存放于表頭結(jié)點所指向的單向鏈表中。

簡述圖的深度優(yōu)先搜索DFS

將圖中每個頂點的訪問標志設(shè)為 FALSE, 之后搜索圖中每個頂點,如果未被訪問,則以該頂點V0為起始點出發(fā),訪問此頂點,然后依次從V0的各個未被訪問的鄰接點出發(fā)深度優(yōu)先搜索遍歷圖,直至圖中所有和V0有路徑相通的頂點都被訪問到。

簡述圖的廣度優(yōu)先搜索

從圖中的某個頂點V0出發(fā),并在訪問此頂點之后依次訪問V0的所有未被訪問過的鄰接點,之后按這些頂點被訪問的先后次序依次訪問它們的鄰接點,直至圖中所有和V0有路徑相通的頂點都被訪問到。

簡述最小生成樹和其對應(yīng)的算法

對于有 n 個結(jié)點的原圖,生成原圖的極小連通子圖,其包含原圖中的所有 n 個結(jié)點,并且有保持圖連通的最少的邊。

普里姆算法:取圖中任意一個頂點 v 作為生成樹的根,之后往生成樹上添加新的頂點 w。在添加的頂點 w 和已經(jīng)在生成樹上的頂點v 之間必定存在一條邊,并且該邊的權(quán)值在所有連通頂點 v 和 w 之間的邊中取值最小。之后繼續(xù)往生成樹上添加頂點,直至生成樹上含有 n-1 個頂點為止。

克魯斯卡爾算法:先構(gòu)造一個只含 n 個頂點的子圖 SG,然后從權(quán)值最小的邊開始,若它的添加不使 SG 中產(chǎn)生回路,則在 SG 上加上這條邊,如此重復(fù),直至加上 n-1 條邊為止。

簡述最短路徑算法

Dijkstral算法為求解一個點到其余各點最小路徑的方法,其算法為:

假設(shè)我們求解的是頂點v到其余各個點的最短距離。n次循環(huán)至n個頂點全部遍歷:

從權(quán)值數(shù)組中找到權(quán)值最小的,標記該邊端點k

打印該路徑及權(quán)值

如果存在經(jīng)過頂點k到頂點i的邊比v->i的權(quán)值小

更新權(quán)值數(shù)組及對應(yīng)路徑

簡述堆

堆是一種完全二叉樹形式,其可分為最大值堆和最小值堆。

最大值堆:子節(jié)點均小于父節(jié)點,根節(jié)點是樹中最大的節(jié)點。

最小值堆:子節(jié)點均大于父節(jié)點,根節(jié)點是樹中最小的節(jié)點。

簡述set

Set是一種集合。集合中的對象不按特定的方式排序,并且沒有重復(fù)對象。

說一下對于樹的理解

數(shù)據(jù)結(jié)構(gòu)樹是一種由有限節(jié)點組成的層次關(guān)系的集合。其特點如下:

每個節(jié)點有零個或多個子節(jié)點;

只有一個節(jié)點沒有父節(jié)點,該節(jié)點稱為根節(jié)點;

除根節(jié)點外,每個節(jié)點有且只有一個父節(jié)點;

簡述二叉查找樹

二叉查找樹的左子樹若不為空,則左子樹上所有結(jié)點的值均小于它的根結(jié)點的值;

二叉查找樹的右子樹若不為空,則右子樹上所有結(jié)點的值均大于它的根結(jié)點的值;

二叉查找樹的左、右子樹也分別為二叉查找樹;

沒有鍵值相等的結(jié)點。

審核編輯 :李倩

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

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98062
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    41591
  • 二叉樹
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12935

原文標題:數(shù)據(jù)結(jié)構(gòu)與算法八股文背誦版V0.3

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    typedef結(jié)構(gòu)體使用

    雖然結(jié)構(gòu)體的出現(xiàn)能夠讓我們有一個更科學(xué)的數(shù)據(jù)結(jié)構(gòu)來管理數(shù)據(jù),但是每次使用結(jié)構(gòu)體都需要struct...,未免顯得有些冗長和麻煩。有了typedef的助攻,我們就可以很輕松地給
    發(fā)表于 12-08 07:04

    單片機的算法

    平滑濾波算法 設(shè)置一個數(shù)據(jù)緩存區(qū),每新采集一個數(shù)據(jù)便存入暫存區(qū)中,同時去掉一個最老數(shù)據(jù),保存這N個數(shù)據(jù)始終是最新更新的
    發(fā)表于 11-28 08:19

    程序運行速度很慢如何優(yōu)化?

    ,考慮內(nèi)聯(lián)(inline)。 優(yōu)化數(shù)據(jù)結(jié)構(gòu): 使用更高效的數(shù)據(jù)結(jié)構(gòu)(如用查表代替復(fù)雜計算)。對齊數(shù)據(jù)訪問。 編譯器優(yōu)化: 啟用合適的優(yōu)化等級(如-O2, -O3)。注意調(diào)試時可能需要降低優(yōu)化。 檢查中斷
    發(fā)表于 11-17 06:12

    通過優(yōu)化代碼來提高MCU運行效率

    最高。 避免在32位MCU上頻繁使用8位char類型進行算術(shù)運算,因為可能需要符號擴展和截斷。 謹慎使用浮點數(shù),如果必須用,盡量用float而非double,并考慮使用定點數(shù)運算替代。 算法數(shù)據(jù)結(jié)構(gòu)
    發(fā)表于 11-12 08:21

    SM4算法實現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進行加密、解密運算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴展都是采用32輪非線性迭代
    發(fā)表于 10-30 08:10

    SM4算法原理及分享1

    SM4算法是一種分組密碼算法。其分組長度為128bit,密鑰長度也為128bit。加密算法與密鑰擴展算法均采用32輪非線性迭代結(jié)構(gòu),以字(
    發(fā)表于 10-30 06:54

    國密系列算法簡介及SM4算法原理介紹

    使用了Feistel結(jié)構(gòu)(分組密碼中的一種對稱結(jié)構(gòu)),其中密鑰擴展部分也使用了Feistel結(jié)構(gòu),所以對數(shù)據(jù)和密鑰的處理流程極為相似。下面對SM4加密過程進行闡述: 對于密鑰擴展部分
    發(fā)表于 10-24 08:25

    e203乘法運算結(jié)構(gòu)算法原理

    e203乘法部件結(jié)構(gòu) E203的乘法操作由一個17周期的乘法器實現(xiàn)。為了提升性能,該乘法器采用了基4Booth編碼,將乘數(shù)分解為17個Booth編碼,與被乘數(shù)相乘后形成的部分和再在相加,從而實現(xiàn)
    發(fā)表于 10-22 06:43

    e203 ALU乘法運算結(jié)構(gòu)算法原理

    e203乘法部件結(jié)構(gòu) E203的乘法操作由一個17周期的乘法器實現(xiàn)。為了提升性能,該乘法器采用了基4Booth編碼,將乘數(shù)分解為17個Booth編碼,與被乘數(shù)相乘后形成的部分和再在相加,從而實現(xiàn)
    發(fā)表于 10-22 06:12

    分享一個嵌入式學(xué)習(xí)階段規(guī)劃

    (如指針實現(xiàn)鏈表增刪查改),排查內(nèi)存泄漏、野指針數(shù)據(jù)結(jié)構(gòu)算法:掌握線性表 / 棧 / 樹等結(jié)構(gòu),學(xué)查找 / 排序算法,手寫代碼(如二分查找、快速排序)電子電路基礎(chǔ):學(xué)電路原理、電子元
    發(fā)表于 09-12 15:11

    【HZ-T536開發(fā)板免費體驗】6、使用protoc-gen-gorm生成標準化的數(shù)據(jù)結(jié)構(gòu)

    在設(shè)計espnow協(xié)議的時候,考慮到我需要在esp32,Linux設(shè)備,web上使用相同的數(shù)據(jù)結(jié)構(gòu),那就需要考慮一下,是否使用一個通用的跨平臺序列化數(shù)據(jù)結(jié)構(gòu)。這時候我想起了protobuf,這個就是
    發(fā)表于 08-26 00:32

    舵機原理簡述!

    舵機原理簡述 舵機是一種高精度的位置伺服執(zhí)行機構(gòu),廣泛應(yīng)用于機器人關(guān)節(jié)、無人機舵面控制、航模操控等場景,其核心功能是通過接收控制信號,精確驅(qū)動輸出軸旋轉(zhuǎn)到指定角度并保持穩(wěn)定。以下從結(jié)構(gòu)組成、控制
    的頭像 發(fā)表于 08-22 10:57 ?1887次閱讀

    盤點嵌入式就業(yè)所需要的技能有哪些?

    ,把握未來的職業(yè)機遇。 1.智能汽車行業(yè): - 熟悉嵌入式編程語言,如C/C++、Python等。 - 掌握嵌入式系統(tǒng)設(shè)計與開發(fā)流程,了解汽車電子控制系統(tǒng)的基本原理。 - 具備良好的數(shù)據(jù)結(jié)構(gòu)算法
    發(fā)表于 08-11 15:43

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點。 2. 從方法論的高度對C語言在數(shù)據(jù)結(jié)構(gòu)算法方面的應(yīng)用進行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    請問K230D怎么將攝像頭采集的視頻數(shù)據(jù)通過串口輸出?

    我連了個WiFi模塊,想要將攝像頭采集的視頻數(shù)據(jù)通過串口發(fā)送出去。之前都是用的STM32,不太會MicroPython,搞不懂對象的數(shù)據(jù)結(jié)構(gòu),求教。
    發(fā)表于 04-28 06:16