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

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

3天內不再提示

算法和數據結構基礎知識分享(中)

jf_78858299 ? 來源:阿里開發(fā)者 ? 作者:復醉 ? 2023-04-06 16:48 ? 次閱讀

2)哈希表的基本操作?

寫入:O(1)、讀?。篛(1)、擴容O(n)。

3)什么是哈希函數?

哈希表本質上是一個數組,只是數組只能根據下標,像a[0] a[1] a[2] a[3] 這樣來訪問,而哈希表的key則是以字符串類型為主的。

通過哈希函數,我們可以把字符串或其他類型的key,轉化成數組的下標index。

如給出一個長度為8的數組,則:

當key=001121時,

index = HashCode ("001121") % Array.length = 7

當key=this時,

index = HashCode ("this") % Array.length = 6

圖片

4)什么是哈希沖突?

不同的key通過哈希函數獲得的下標有可能是相同的,例如002936這個key對應的數組下標是2,002947對應的數組下標也是2,這種情況就是哈希沖突。

5)如何解決哈希沖突?

開放尋址法:例子Threadlocal。

6 樹

1)什么是樹?

樹(tree)是n(n≥0)個節(jié)點的有限集。

當n=0時,稱為空樹。在任意一個非空樹中,有如下特點:

  • 有且僅有一個特定的稱為根的節(jié)點。
  • 當n>1時,其余節(jié)點可分為m(m>0)個互不相交的有限集,每一個集合本身又是一個樹,并稱為根的子樹。

2)樹的遍歷?

(1)深度優(yōu)先

前序:根節(jié)點、左子樹、右子樹。

圖片

中序:左子樹、根節(jié)點、右子樹。

圖片

后序:左子樹、右子樹、根節(jié)點。

圖片

實現方式:遞歸或棧。

(2)廣度優(yōu)先

層序:一層一層遍歷。

圖片

實現方式:隊列。

7 二叉樹

1)什么是二叉樹?

二叉樹(binary tree)是樹的一種特殊形式。二叉,顧名思義,這種樹的每個節(jié)點最多有2個孩子節(jié)點。注意,這里是最多有2個,也可能只有1個,或者沒有孩子節(jié)點。

2)什么是滿二叉樹?

一個二叉樹的所有非葉子節(jié)點都存在左右孩子,并且所有葉子節(jié)點都在同一層級上,那么這個樹就是滿二叉樹。

3)什么是完全二叉樹?

對一個有n個節(jié)點的二叉樹,按層級順序編號,則所有節(jié)點的編號為從1到n。如果這個樹所有節(jié)點和同樣深度的滿二叉樹的編號為從1到n的節(jié)點位置相同,則這個二叉樹為完全二叉樹。

圖片

8 二叉查找樹

1)什么是二叉查找樹?

二叉查找樹在二叉樹的基礎上增加了以下幾個條件:

  • 如果左子樹不為空,則左子樹上所有節(jié)點的值均小于根節(jié)點的值。
  • 如果右子樹不為空,則右子樹上所有節(jié)點的值均大于根節(jié)點的值。
  • 左、右子樹也都是二叉查找樹。

圖片

2)二叉查找樹的作用?

  • 查找==》二分查找。
  • 排序==》中序遍歷。

3)二叉樹的實現方式?

  • 鏈表。
  • 數組:對于稀疏二叉樹來說,數組表示法是非常浪費空間的。

9 二叉堆

1)什么是二叉堆?

二叉堆是一種特殊的完全二叉樹,它分為兩個類型:最大堆和最小堆。

  • 最大堆的任何一個父節(jié)點的值,都大于或等于它左、右孩子節(jié)點的值。
  • 最小堆的任何一個父節(jié)點的值,都小于或等于它左、右孩子節(jié)點的值。

圖片

2)二叉堆的基本操作?

(1)插入:插入最末,節(jié)點上浮。

圖片

(2)刪除:刪除頭節(jié)點,尾節(jié)點放到頭部,再下沉。

圖片

(3)構建二叉堆:二叉樹==》二叉堆,所有非葉子節(jié)點依次下沉。

圖片

3)二叉堆的實現方式?

數組:

圖片

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

    關注

    3

    文章

    569

    瀏覽量

    40072
  • 排序算法
    +關注

    關注

    0

    文章

    52

    瀏覽量

    10047
  • 存儲結構
    +關注

    關注

    0

    文章

    21

    瀏覽量

    9699
收藏 人收藏

    評論

    相關推薦

    數據結構算法分析(Java版)(pdf)

    數據結構算法分析(Java版)(pdf)http://www.ibeifeng.com/read.php?tid=4812&u=73481【中文】Java數據結構算法中文第
    發(fā)表于 12-20 21:22

    數據結構算法分析

    數據結構算法分析
    發(fā)表于 06-05 10:46

    【下載】《嵌入式系統(tǒng)軟件設計數據結構

    教學參考書。內容簡介  根據嵌入式系統(tǒng)軟件設計需要的“數據結構知識編寫而成。書中基本內容有:常用線性數據結構在嵌入式系統(tǒng)的實現和相關算法
    發(fā)表于 11-30 17:46

    請問學習stm32以及ucos ii ucgui需要學習數據結構算法之類的知識嗎?

    學習stm32以及ucos ii ucgui是否需要學習數據結構算法之類的知識。
    發(fā)表于 06-09 23:22

    數據結構的幾個重要知識

    ,也就掌握好了數據處理的算法,良好的數據結構對于軟件系統(tǒng)的執(zhí)行效率、數據存儲效率都非常重要。棧的模型以上簡單了解了什么是數據結構
    發(fā)表于 02-27 15:01

    數據結構算法核心知識點總結概述

    數據結構算法核心知識點總結概述最近有看一些大佬的專欄,受益匪淺。深刻的覺察到我們要想成為一個偉大的程序員,或者說小一點,成為一個厲害的程序員,基礎知識是核心競爭力也是我們不斷向上提升
    發(fā)表于 12-21 08:00

    數據結構算法習題

    數據結構算法習題,ACM專用,刷題初期按照這個地方刷很好
    發(fā)表于 03-03 18:25 ?0次下載

    數據結構算法

    全國C語言考試公共基礎知識點——數據結構算法,該資料包含了有關數據結構算法的全部知識點。
    發(fā)表于 03-30 14:27 ?0次下載

    大牛分享平時如何學習數據結構算法

    數據結構算法的地位對于一個程序員來說不言而喻。今天這篇文章不是來勸你們學習數據結構算法的,也不是來和你們說數據結構
    的頭像 發(fā)表于 11-02 11:25 ?2950次閱讀

    數據結構算法知識點有哪些?

    數據結構算法知識點有哪些?
    的頭像 發(fā)表于 01-10 15:22 ?8150次閱讀

    數據結構有哪些知識重點

    不管你現在是不是需要用到數據結構的相關知識,在工作的過程理解、掌握好數據結構,對現在的工作和以后的發(fā)展都是有幫助的。
    發(fā)表于 03-06 10:05 ?2331次閱讀
    <b class='flag-5'>數據結構</b>有哪些<b class='flag-5'>知識</b>重點

    數據結構算法分析的二叉樹與堆有關知識匯總

    該資料包括數據結構算法分析的二叉樹與堆有關的一些知識
    發(fā)表于 11-03 09:37 ?0次下載

    程序設計和數據結構(嵌入式)

    編程的基礎-算法和數據結構入門資料免費下載。
    發(fā)表于 04-18 09:35 ?1次下載

    算法和數據結構基礎知識分享(上)

    有哪些常見的數據結構?基本操作是什么?常見的排序算法是如何實現的?各有什么優(yōu)缺點?本文簡要分享算法基礎、常見的數據結構以及排序算法。
    的頭像 發(fā)表于 04-06 16:48 ?762次閱讀
    <b class='flag-5'>算法</b><b class='flag-5'>和數據結構</b><b class='flag-5'>基礎知識</b>分享(上)

    算法和數據結構基礎知識分享(下)

    有哪些常見的數據結構?基本操作是什么?常見的排序算法是如何實現的?各有什么優(yōu)缺點?本文簡要分享算法基礎、常見的數據結構以及排序算法
    的頭像 發(fā)表于 04-06 16:48 ?715次閱讀
    <b class='flag-5'>算法</b><b class='flag-5'>和數據結構</b><b class='flag-5'>基礎知識</b>分享(下)