数据结构与算法01:绪论【LEARN FROM 李春葆《数据结构教程》】
文章目錄
- 0.寫在前面
- 1.數(shù)據(jù)結(jié)構(gòu)總覽
- 1.1 內(nèi)容
- 1.2 數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)課程體系(偏軟)中的地位
- 1.3 數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)類課程的關(guān)系
- 1.4 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)目標(biāo)
- 1.5 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)方法
- 2.什么是數(shù)據(jù)結(jié)構(gòu)
- 2.1 數(shù)據(jù)結(jié)構(gòu)的定義
- 2.1.1 數(shù)據(jù)結(jié)構(gòu)中的幾個(gè)概念
- 2.1.2 一個(gè)數(shù)據(jù)結(jié)構(gòu)的構(gòu)成
- 2.1.2.1 數(shù)據(jù)的邏輯結(jié)構(gòu)表示
- 2.1.2.2 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)表示
- 2.1.2.3 數(shù)據(jù)運(yùn)算
- 2.2 邏輯結(jié)構(gòu)類型
- 2.2.1 集合
- 2.2.2 線性結(jié)構(gòu)
- 2.2.3 樹形結(jié)構(gòu)
- 2.2.4 圖形結(jié)構(gòu)
- 2.3 存儲(chǔ)結(jié)構(gòu)類型
- 2.4 數(shù)據(jù)類型和抽象數(shù)據(jù)類型
- 2.4.1 數(shù)據(jù)類型
- 2.4.2 抽象數(shù)據(jù)類型
- 3.算法及其描述
- 3.1 什么是算法
- 3.2 算法描述
- 4.算法分析
- 4.1 算法分析概述
- 4.2 算法時(shí)間復(fù)雜度分析
- 4.2.1 算法分析方式
- 4.2.2 分析算法的執(zhí)行時(shí)間
- 4.2.3 算法的執(zhí)行時(shí)間用時(shí)間復(fù)雜度來表示
- 4.2.4 簡(jiǎn)化的算法時(shí)間復(fù)雜度分析
- 4.2.5 最好、最壞和平均時(shí)間復(fù)雜度分析
- 4.2.6 算法空間復(fù)雜度分析
- 5.數(shù)據(jù)結(jié)構(gòu)+算法=程序
- 5.1 程序和數(shù)據(jù)結(jié)構(gòu)
- 5.2 算法和程序
- 5.3 算法和數(shù)據(jù)結(jié)構(gòu)
- 5.4 數(shù)據(jù)結(jié)構(gòu)的發(fā)展
- 6.總結(jié)
- 6.1 從數(shù)據(jù)結(jié)構(gòu)角度求解問題的過程
- 6.2 算法描述―輸出型參數(shù)
0.寫在前面
關(guān)于本文,被收集在我的專欄《數(shù)據(jù)結(jié)構(gòu)與算法教程筆記》中,筆記整理來自李春葆老師的《數(shù)據(jù)結(jié)構(gòu)教程第六版》。更多章節(jié)可參考該專欄。【該專欄目前處于持續(xù)更新狀態(tài) -2022/9/11 】
1.數(shù)據(jù)結(jié)構(gòu)總覽
1.1 內(nèi)容
#mermaid-svg-PqNYmN33L5k5q9gE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PqNYmN33L5k5q9gE .error-icon{fill:#552222;}#mermaid-svg-PqNYmN33L5k5q9gE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PqNYmN33L5k5q9gE .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-PqNYmN33L5k5q9gE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PqNYmN33L5k5q9gE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PqNYmN33L5k5q9gE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PqNYmN33L5k5q9gE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PqNYmN33L5k5q9gE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PqNYmN33L5k5q9gE .marker.cross{stroke:#333333;}#mermaid-svg-PqNYmN33L5k5q9gE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PqNYmN33L5k5q9gE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-PqNYmN33L5k5q9gE .cluster-label text{fill:#333;}#mermaid-svg-PqNYmN33L5k5q9gE .cluster-label span{color:#333;}#mermaid-svg-PqNYmN33L5k5q9gE .label text,#mermaid-svg-PqNYmN33L5k5q9gE span{fill:#333;color:#333;}#mermaid-svg-PqNYmN33L5k5q9gE .node rect,#mermaid-svg-PqNYmN33L5k5q9gE .node circle,#mermaid-svg-PqNYmN33L5k5q9gE .node ellipse,#mermaid-svg-PqNYmN33L5k5q9gE .node polygon,#mermaid-svg-PqNYmN33L5k5q9gE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-PqNYmN33L5k5q9gE .node .label{text-align:center;}#mermaid-svg-PqNYmN33L5k5q9gE .node.clickable{cursor:pointer;}#mermaid-svg-PqNYmN33L5k5q9gE .arrowheadPath{fill:#333333;}#mermaid-svg-PqNYmN33L5k5q9gE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-PqNYmN33L5k5q9gE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-PqNYmN33L5k5q9gE .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-PqNYmN33L5k5q9gE .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-PqNYmN33L5k5q9gE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-PqNYmN33L5k5q9gE .cluster text{fill:#333;}#mermaid-svg-PqNYmN33L5k5q9gE .cluster span{color:#333;}#mermaid-svg-PqNYmN33L5k5q9gE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-PqNYmN33L5k5q9gE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}基本數(shù)據(jù)組織和數(shù)據(jù)處理方法各種數(shù)據(jù)的邏輯結(jié)構(gòu)描述各種數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)表示各種數(shù)據(jù)結(jié)構(gòu)的運(yùn)算定義設(shè)計(jì)實(shí)現(xiàn)運(yùn)算的算法分析算法的效率1.2 數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)課程體系(偏軟)中的地位
#mermaid-svg-ZhaosJUjnotXKeHA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZhaosJUjnotXKeHA .error-icon{fill:#552222;}#mermaid-svg-ZhaosJUjnotXKeHA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZhaosJUjnotXKeHA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZhaosJUjnotXKeHA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZhaosJUjnotXKeHA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZhaosJUjnotXKeHA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZhaosJUjnotXKeHA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZhaosJUjnotXKeHA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZhaosJUjnotXKeHA .marker.cross{stroke:#333333;}#mermaid-svg-ZhaosJUjnotXKeHA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZhaosJUjnotXKeHA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZhaosJUjnotXKeHA .cluster-label text{fill:#333;}#mermaid-svg-ZhaosJUjnotXKeHA .cluster-label span{color:#333;}#mermaid-svg-ZhaosJUjnotXKeHA .label text,#mermaid-svg-ZhaosJUjnotXKeHA span{fill:#333;color:#333;}#mermaid-svg-ZhaosJUjnotXKeHA .node rect,#mermaid-svg-ZhaosJUjnotXKeHA .node circle,#mermaid-svg-ZhaosJUjnotXKeHA .node ellipse,#mermaid-svg-ZhaosJUjnotXKeHA .node polygon,#mermaid-svg-ZhaosJUjnotXKeHA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZhaosJUjnotXKeHA .node .label{text-align:center;}#mermaid-svg-ZhaosJUjnotXKeHA .node.clickable{cursor:pointer;}#mermaid-svg-ZhaosJUjnotXKeHA .arrowheadPath{fill:#333333;}#mermaid-svg-ZhaosJUjnotXKeHA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZhaosJUjnotXKeHA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZhaosJUjnotXKeHA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZhaosJUjnotXKeHA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZhaosJUjnotXKeHA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZhaosJUjnotXKeHA .cluster text{fill:#333;}#mermaid-svg-ZhaosJUjnotXKeHA .cluster span{color:#333;}#mermaid-svg-ZhaosJUjnotXKeHA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZhaosJUjnotXKeHA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}計(jì)算機(jī)基礎(chǔ)C語言C語言數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析操作系統(tǒng)
編譯原理
數(shù)據(jù)庫原理
軟件工程
1.3 數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)類課程的關(guān)系
#mermaid-svg-kAYLBlGn5DbUOaGj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj .error-icon{fill:#552222;}#mermaid-svg-kAYLBlGn5DbUOaGj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kAYLBlGn5DbUOaGj .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-kAYLBlGn5DbUOaGj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kAYLBlGn5DbUOaGj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kAYLBlGn5DbUOaGj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kAYLBlGn5DbUOaGj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kAYLBlGn5DbUOaGj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kAYLBlGn5DbUOaGj .marker.cross{stroke:#333333;}#mermaid-svg-kAYLBlGn5DbUOaGj svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kAYLBlGn5DbUOaGj .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj .cluster-label text{fill:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj .cluster-label span{color:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj .label text,#mermaid-svg-kAYLBlGn5DbUOaGj span{fill:#333;color:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj .node rect,#mermaid-svg-kAYLBlGn5DbUOaGj .node circle,#mermaid-svg-kAYLBlGn5DbUOaGj .node ellipse,#mermaid-svg-kAYLBlGn5DbUOaGj .node polygon,#mermaid-svg-kAYLBlGn5DbUOaGj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kAYLBlGn5DbUOaGj .node .label{text-align:center;}#mermaid-svg-kAYLBlGn5DbUOaGj .node.clickable{cursor:pointer;}#mermaid-svg-kAYLBlGn5DbUOaGj .arrowheadPath{fill:#333333;}#mermaid-svg-kAYLBlGn5DbUOaGj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kAYLBlGn5DbUOaGj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kAYLBlGn5DbUOaGj .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-kAYLBlGn5DbUOaGj .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-kAYLBlGn5DbUOaGj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kAYLBlGn5DbUOaGj .cluster text{fill:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj .cluster span{color:#333;}#mermaid-svg-kAYLBlGn5DbUOaGj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kAYLBlGn5DbUOaGj :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}基本編程以數(shù)據(jù)機(jī)構(gòu)為中心的算法設(shè)計(jì)基本算法設(shè)計(jì)方法通用算法設(shè)計(jì)
算法設(shè)計(jì)方法學(xué)程序設(shè)計(jì)語言數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析識(shí)字寫小作文寫大文章
1.4 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)目標(biāo)
-
掌握數(shù)據(jù)結(jié)構(gòu)的基本概念、基本原理和基本方法。
-
掌握數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及基本運(yùn)算的實(shí)現(xiàn)過程。
#mermaid-svg-CX7PXlTiN5WEPry8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 .error-icon{fill:#552222;}#mermaid-svg-CX7PXlTiN5WEPry8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CX7PXlTiN5WEPry8 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-CX7PXlTiN5WEPry8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CX7PXlTiN5WEPry8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CX7PXlTiN5WEPry8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CX7PXlTiN5WEPry8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CX7PXlTiN5WEPry8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CX7PXlTiN5WEPry8 .marker.cross{stroke:#333333;}#mermaid-svg-CX7PXlTiN5WEPry8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CX7PXlTiN5WEPry8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 .cluster-label text{fill:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 .cluster-label span{color:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 .label text,#mermaid-svg-CX7PXlTiN5WEPry8 span{fill:#333;color:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 .node rect,#mermaid-svg-CX7PXlTiN5WEPry8 .node circle,#mermaid-svg-CX7PXlTiN5WEPry8 .node ellipse,#mermaid-svg-CX7PXlTiN5WEPry8 .node polygon,#mermaid-svg-CX7PXlTiN5WEPry8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CX7PXlTiN5WEPry8 .node .label{text-align:center;}#mermaid-svg-CX7PXlTiN5WEPry8 .node.clickable{cursor:pointer;}#mermaid-svg-CX7PXlTiN5WEPry8 .arrowheadPath{fill:#333333;}#mermaid-svg-CX7PXlTiN5WEPry8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CX7PXlTiN5WEPry8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CX7PXlTiN5WEPry8 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-CX7PXlTiN5WEPry8 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-CX7PXlTiN5WEPry8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CX7PXlTiN5WEPry8 .cluster text{fill:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 .cluster span{color:#333;}#mermaid-svg-CX7PXlTiN5WEPry8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CX7PXlTiN5WEPry8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}提煉設(shè)計(jì)實(shí)現(xiàn)求解問題
數(shù)據(jù)運(yùn)行-->數(shù)據(jù)數(shù)據(jù)邏輯結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)基本運(yùn)行:算法 -
掌握算法基本的時(shí)間復(fù)雜度與空間復(fù)雜度的分析方法,能夠設(shè)計(jì)出求解問題的高效算法。
?? 同一求解問題通常有多種實(shí)現(xiàn)算法,通過時(shí)間復(fù)雜度與空間復(fù)雜度的分析,找出最好的實(shí)現(xiàn)算法。
1.5 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)方法
-
理解各種數(shù)據(jù)結(jié)構(gòu)的邏輯特性和存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)
#mermaid-svg-g0itRNUEhSJwqFEg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g0itRNUEhSJwqFEg .error-icon{fill:#552222;}#mermaid-svg-g0itRNUEhSJwqFEg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-g0itRNUEhSJwqFEg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-g0itRNUEhSJwqFEg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-g0itRNUEhSJwqFEg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-g0itRNUEhSJwqFEg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-g0itRNUEhSJwqFEg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-g0itRNUEhSJwqFEg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-g0itRNUEhSJwqFEg .marker.cross{stroke:#333333;}#mermaid-svg-g0itRNUEhSJwqFEg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-g0itRNUEhSJwqFEg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-g0itRNUEhSJwqFEg .cluster-label text{fill:#333;}#mermaid-svg-g0itRNUEhSJwqFEg .cluster-label span{color:#333;}#mermaid-svg-g0itRNUEhSJwqFEg .label text,#mermaid-svg-g0itRNUEhSJwqFEg span{fill:#333;color:#333;}#mermaid-svg-g0itRNUEhSJwqFEg .node rect,#mermaid-svg-g0itRNUEhSJwqFEg .node circle,#mermaid-svg-g0itRNUEhSJwqFEg .node ellipse,#mermaid-svg-g0itRNUEhSJwqFEg .node polygon,#mermaid-svg-g0itRNUEhSJwqFEg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-g0itRNUEhSJwqFEg .node .label{text-align:center;}#mermaid-svg-g0itRNUEhSJwqFEg .node.clickable{cursor:pointer;}#mermaid-svg-g0itRNUEhSJwqFEg .arrowheadPath{fill:#333333;}#mermaid-svg-g0itRNUEhSJwqFEg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-g0itRNUEhSJwqFEg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-g0itRNUEhSJwqFEg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-g0itRNUEhSJwqFEg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-g0itRNUEhSJwqFEg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-g0itRNUEhSJwqFEg .cluster text{fill:#333;}#mermaid-svg-g0itRNUEhSJwqFEg .cluster span{color:#333;}#mermaid-svg-g0itRNUEhSJwqFEg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-g0itRNUEhSJwqFEg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}映射:計(jì)算機(jī)中的表示邏輯特性存儲(chǔ)結(jié)構(gòu)線性表?xiàng)j?duì)列串?dāng)?shù)組樹二叉樹圖 -
掌握各種數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)的基本方法
?? 只有掌握了數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)表示,才能在此之上設(shè)計(jì)算法
#mermaid-svg-jGbJcN6ZqoCsDdhg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .error-icon{fill:#552222;}#mermaid-svg-jGbJcN6ZqoCsDdhg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jGbJcN6ZqoCsDdhg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .marker.cross{stroke:#333333;}#mermaid-svg-jGbJcN6ZqoCsDdhg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jGbJcN6ZqoCsDdhg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .cluster-label text{fill:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .cluster-label span{color:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .label text,#mermaid-svg-jGbJcN6ZqoCsDdhg span{fill:#333;color:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .node rect,#mermaid-svg-jGbJcN6ZqoCsDdhg .node circle,#mermaid-svg-jGbJcN6ZqoCsDdhg .node ellipse,#mermaid-svg-jGbJcN6ZqoCsDdhg .node polygon,#mermaid-svg-jGbJcN6ZqoCsDdhg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jGbJcN6ZqoCsDdhg .node .label{text-align:center;}#mermaid-svg-jGbJcN6ZqoCsDdhg .node.clickable{cursor:pointer;}#mermaid-svg-jGbJcN6ZqoCsDdhg .arrowheadPath{fill:#333333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jGbJcN6ZqoCsDdhg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-jGbJcN6ZqoCsDdhg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-jGbJcN6ZqoCsDdhg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jGbJcN6ZqoCsDdhg .cluster text{fill:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg .cluster span{color:#333;}#mermaid-svg-jGbJcN6ZqoCsDdhg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jGbJcN6ZqoCsDdhg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}映射:計(jì)算機(jī)中的表示運(yùn)算實(shí)現(xiàn)邏輯特性存儲(chǔ)結(jié)構(gòu)算法設(shè)計(jì) -
利用各種數(shù)據(jù)結(jié)構(gòu)來求解實(shí)際問題
#mermaid-svg-vweDXJdDCkIJlKB8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 .error-icon{fill:#552222;}#mermaid-svg-vweDXJdDCkIJlKB8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vweDXJdDCkIJlKB8 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-vweDXJdDCkIJlKB8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vweDXJdDCkIJlKB8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vweDXJdDCkIJlKB8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vweDXJdDCkIJlKB8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vweDXJdDCkIJlKB8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vweDXJdDCkIJlKB8 .marker.cross{stroke:#333333;}#mermaid-svg-vweDXJdDCkIJlKB8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vweDXJdDCkIJlKB8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 .cluster-label text{fill:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 .cluster-label span{color:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 .label text,#mermaid-svg-vweDXJdDCkIJlKB8 span{fill:#333;color:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 .node rect,#mermaid-svg-vweDXJdDCkIJlKB8 .node circle,#mermaid-svg-vweDXJdDCkIJlKB8 .node ellipse,#mermaid-svg-vweDXJdDCkIJlKB8 .node polygon,#mermaid-svg-vweDXJdDCkIJlKB8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vweDXJdDCkIJlKB8 .node .label{text-align:center;}#mermaid-svg-vweDXJdDCkIJlKB8 .node.clickable{cursor:pointer;}#mermaid-svg-vweDXJdDCkIJlKB8 .arrowheadPath{fill:#333333;}#mermaid-svg-vweDXJdDCkIJlKB8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vweDXJdDCkIJlKB8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vweDXJdDCkIJlKB8 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-vweDXJdDCkIJlKB8 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-vweDXJdDCkIJlKB8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vweDXJdDCkIJlKB8 .cluster text{fill:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 .cluster span{color:#333;}#mermaid-svg-vweDXJdDCkIJlKB8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vweDXJdDCkIJlKB8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}求解問題數(shù)據(jù)如何表示(選擇合適的數(shù)據(jù)結(jié)構(gòu))數(shù)據(jù)運(yùn)算如何實(shí)現(xiàn)數(shù)據(jù)運(yùn)算如何高效實(shí)現(xiàn) -
演繹和歸納相結(jié)合
#mermaid-svg-2EjO7BbaOhKeSR8n {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n .error-icon{fill:#552222;}#mermaid-svg-2EjO7BbaOhKeSR8n .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2EjO7BbaOhKeSR8n .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-2EjO7BbaOhKeSR8n .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2EjO7BbaOhKeSR8n .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2EjO7BbaOhKeSR8n .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2EjO7BbaOhKeSR8n .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2EjO7BbaOhKeSR8n .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2EjO7BbaOhKeSR8n .marker.cross{stroke:#333333;}#mermaid-svg-2EjO7BbaOhKeSR8n svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2EjO7BbaOhKeSR8n .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n .cluster-label text{fill:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n .cluster-label span{color:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n .label text,#mermaid-svg-2EjO7BbaOhKeSR8n span{fill:#333;color:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n .node rect,#mermaid-svg-2EjO7BbaOhKeSR8n .node circle,#mermaid-svg-2EjO7BbaOhKeSR8n .node ellipse,#mermaid-svg-2EjO7BbaOhKeSR8n .node polygon,#mermaid-svg-2EjO7BbaOhKeSR8n .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-2EjO7BbaOhKeSR8n .node .label{text-align:center;}#mermaid-svg-2EjO7BbaOhKeSR8n .node.clickable{cursor:pointer;}#mermaid-svg-2EjO7BbaOhKeSR8n .arrowheadPath{fill:#333333;}#mermaid-svg-2EjO7BbaOhKeSR8n .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-2EjO7BbaOhKeSR8n .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-2EjO7BbaOhKeSR8n .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-2EjO7BbaOhKeSR8n .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-2EjO7BbaOhKeSR8n .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-2EjO7BbaOhKeSR8n .cluster text{fill:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n .cluster span{color:#333;}#mermaid-svg-2EjO7BbaOhKeSR8n div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-2EjO7BbaOhKeSR8n :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}演繹學(xué)習(xí)訓(xùn)練歸納總結(jié)數(shù)據(jù)結(jié)構(gòu)魚(內(nèi)容):基本概念,基本原理和基本方法練習(xí)(作業(yè)和編程)漁(方法):求解問題的能力
2.什么是數(shù)據(jù)結(jié)構(gòu)
2.1 數(shù)據(jù)結(jié)構(gòu)的定義
2.1.1 數(shù)據(jù)結(jié)構(gòu)中的幾個(gè)概念
數(shù)據(jù):所有能夠輸入到計(jì)算機(jī)中,且能被計(jì)算機(jī)處理的符號(hào)的集合。數(shù)據(jù)結(jié)構(gòu)中主要討論結(jié)構(gòu)化數(shù)據(jù)。
數(shù)據(jù)元素:是數(shù)據(jù)(集合)中的一個(gè)“個(gè)體”,它是數(shù)據(jù)的基本單位。
數(shù)據(jù)項(xiàng):數(shù)據(jù)項(xiàng)是用來描述數(shù)據(jù)元素的,它是數(shù)據(jù)的最小單位。
數(shù)據(jù)對(duì)象:具有相同性質(zhì)的若干個(gè)數(shù)據(jù)元素的集合,如整數(shù)數(shù)據(jù)對(duì)象是所有整數(shù)的集合。默認(rèn)情況下,數(shù)據(jù)結(jié)構(gòu)中討論的數(shù)據(jù)都是數(shù)據(jù)對(duì)象。
數(shù)據(jù)結(jié)構(gòu):是指帶結(jié)構(gòu)的數(shù)據(jù)元素的集合。
#mermaid-svg-kwU689xqMXDizx2o {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kwU689xqMXDizx2o .error-icon{fill:#552222;}#mermaid-svg-kwU689xqMXDizx2o .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kwU689xqMXDizx2o .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-kwU689xqMXDizx2o .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kwU689xqMXDizx2o .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kwU689xqMXDizx2o .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kwU689xqMXDizx2o .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kwU689xqMXDizx2o .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kwU689xqMXDizx2o .marker.cross{stroke:#333333;}#mermaid-svg-kwU689xqMXDizx2o svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kwU689xqMXDizx2o .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kwU689xqMXDizx2o .cluster-label text{fill:#333;}#mermaid-svg-kwU689xqMXDizx2o .cluster-label span{color:#333;}#mermaid-svg-kwU689xqMXDizx2o .label text,#mermaid-svg-kwU689xqMXDizx2o span{fill:#333;color:#333;}#mermaid-svg-kwU689xqMXDizx2o .node rect,#mermaid-svg-kwU689xqMXDizx2o .node circle,#mermaid-svg-kwU689xqMXDizx2o .node ellipse,#mermaid-svg-kwU689xqMXDizx2o .node polygon,#mermaid-svg-kwU689xqMXDizx2o .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kwU689xqMXDizx2o .node .label{text-align:center;}#mermaid-svg-kwU689xqMXDizx2o .node.clickable{cursor:pointer;}#mermaid-svg-kwU689xqMXDizx2o .arrowheadPath{fill:#333333;}#mermaid-svg-kwU689xqMXDizx2o .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kwU689xqMXDizx2o .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kwU689xqMXDizx2o .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-kwU689xqMXDizx2o .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-kwU689xqMXDizx2o .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kwU689xqMXDizx2o .cluster text{fill:#333;}#mermaid-svg-kwU689xqMXDizx2o .cluster span{color:#333;}#mermaid-svg-kwU689xqMXDizx2o div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kwU689xqMXDizx2o :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)對(duì)象:相同性質(zhì)的數(shù)據(jù)元素的集合結(jié)構(gòu):數(shù)據(jù)元素之間的關(guān)系構(gòu)成結(jié)構(gòu)2.1.2 一個(gè)數(shù)據(jù)結(jié)構(gòu)的構(gòu)成
#mermaid-svg-r999YIAdXkBUK9yr {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-r999YIAdXkBUK9yr .error-icon{fill:#552222;}#mermaid-svg-r999YIAdXkBUK9yr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-r999YIAdXkBUK9yr .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-r999YIAdXkBUK9yr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-r999YIAdXkBUK9yr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-r999YIAdXkBUK9yr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-r999YIAdXkBUK9yr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-r999YIAdXkBUK9yr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-r999YIAdXkBUK9yr .marker.cross{stroke:#333333;}#mermaid-svg-r999YIAdXkBUK9yr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-r999YIAdXkBUK9yr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-r999YIAdXkBUK9yr .cluster-label text{fill:#333;}#mermaid-svg-r999YIAdXkBUK9yr .cluster-label span{color:#333;}#mermaid-svg-r999YIAdXkBUK9yr .label text,#mermaid-svg-r999YIAdXkBUK9yr span{fill:#333;color:#333;}#mermaid-svg-r999YIAdXkBUK9yr .node rect,#mermaid-svg-r999YIAdXkBUK9yr .node circle,#mermaid-svg-r999YIAdXkBUK9yr .node ellipse,#mermaid-svg-r999YIAdXkBUK9yr .node polygon,#mermaid-svg-r999YIAdXkBUK9yr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-r999YIAdXkBUK9yr .node .label{text-align:center;}#mermaid-svg-r999YIAdXkBUK9yr .node.clickable{cursor:pointer;}#mermaid-svg-r999YIAdXkBUK9yr .arrowheadPath{fill:#333333;}#mermaid-svg-r999YIAdXkBUK9yr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-r999YIAdXkBUK9yr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-r999YIAdXkBUK9yr .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-r999YIAdXkBUK9yr .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-r999YIAdXkBUK9yr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-r999YIAdXkBUK9yr .cluster text{fill:#333;}#mermaid-svg-r999YIAdXkBUK9yr .cluster span{color:#333;}#mermaid-svg-r999YIAdXkBUK9yr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-r999YIAdXkBUK9yr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}邏輯結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)運(yùn)算2.1.2.1 數(shù)據(jù)的邏輯結(jié)構(gòu)表示
數(shù)據(jù)的邏輯結(jié)構(gòu)是面向用戶的,它有多種表示形式。
二元組是一種通用的邏輯結(jié)構(gòu)表示方法。
每個(gè)關(guān)系的用若干個(gè)序偶來表示
2.1.2.2 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)表示
1?? 數(shù)據(jù)在計(jì)算機(jī)存儲(chǔ)器中的存儲(chǔ)方式就是存儲(chǔ)結(jié)構(gòu)。它是面向程序員的。邏輯結(jié)構(gòu)映射存儲(chǔ)結(jié)構(gòu)。
2?? 設(shè)計(jì)存儲(chǔ)結(jié)構(gòu)的這種映射應(yīng)滿足兩個(gè)要求:
存儲(chǔ)所有元素
存儲(chǔ)數(shù)據(jù)元素間的關(guān)系
結(jié)構(gòu)體數(shù)組(順序存儲(chǔ)結(jié)構(gòu))
- 所有元素占用一整塊內(nèi)存空間
- 邏輯上相鄰的元素,物理上也相鄰。
鏈表(鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu))
- 一個(gè)邏輯元素用一個(gè)結(jié)點(diǎn)存儲(chǔ),每個(gè)結(jié)點(diǎn)單獨(dú)分配,所有結(jié)點(diǎn)的地址不一定是連續(xù)的。
- 用指針來表示邏輯關(guān)系。
2.1.2.3 數(shù)據(jù)運(yùn)算
數(shù)據(jù)運(yùn)算是對(duì)數(shù)據(jù)的操作。分為兩個(gè)層次:運(yùn)算描述 和 運(yùn)算實(shí)現(xiàn)。
- 同一邏輯結(jié)構(gòu)可以對(duì)應(yīng)多種存儲(chǔ)結(jié)構(gòu)。
- 同樣的運(yùn)算,在不同的存儲(chǔ)結(jié)構(gòu)中,其實(shí)現(xiàn)過程是不同的
2.2 邏輯結(jié)構(gòu)類型
各種各樣的數(shù)據(jù)呈現(xiàn)出不同的邏輯結(jié)構(gòu),歸納為4種。
2.2.1 集合
- 元素之間關(guān)系:無。
- 特點(diǎn):數(shù)據(jù)元素之間除了“屬于同一個(gè)集合”的關(guān)系外,別無其他邏輯關(guān)系。是最松散的,不受任何制約的關(guān)系。
2.2.2 線性結(jié)構(gòu)
- 元素之間關(guān)系:一對(duì)一。
- 特點(diǎn):開始元素和終端元素都是唯一的,除此之外,其余元素都有且僅有一個(gè)前驅(qū)元素和一個(gè)后繼元素。
2.2.3 樹形結(jié)構(gòu)
- 元素之間關(guān)系:一對(duì)多。
- 特點(diǎn):開始元素唯一,終端元素不唯一。除終端元素以外,每個(gè)元素有一個(gè)或多個(gè)后繼元素;除開始元素外,每個(gè)元素有且僅有一個(gè)前驅(qū)元素。
2.2.4 圖形結(jié)構(gòu)
- 元素之間關(guān)系:多對(duì)多。
- 特點(diǎn):所有元素都可能有多個(gè)前驅(qū)元素和多個(gè)后繼元素。
2.3 存儲(chǔ)結(jié)構(gòu)類型
在軟件開發(fā)中,人們?cè)O(shè)計(jì)了各種存儲(chǔ)結(jié)構(gòu)。 歸納為4種基本的存儲(chǔ)結(jié)構(gòu)。
- 順序存儲(chǔ)結(jié)構(gòu)
- 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
- 索引存儲(chǔ)結(jié)構(gòu)
- 哈希(散列)存儲(chǔ)結(jié)構(gòu)
2.4 數(shù)據(jù)類型和抽象數(shù)據(jù)類型
2.4.1 數(shù)據(jù)類型
1?? 在高級(jí)程序語言中提供了多種數(shù)據(jù)類型。不同數(shù)據(jù)類型的變量,其所能取的值的范圍不同,所能進(jìn)行的操作不同。
2?? 數(shù)據(jù)類型 是一個(gè)值的集合和定義在此集合上的一組操作的總稱
3?? 數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的關(guān)系:數(shù)據(jù)類型就是已經(jīng)實(shí)現(xiàn)了的數(shù)據(jù)結(jié)構(gòu)。
2.4.2 抽象數(shù)據(jù)類型
1?? 抽象數(shù)據(jù)類型(ADT)指的是從求解問題的數(shù)學(xué)模型中抽象出來的數(shù)據(jù)邏輯結(jié)構(gòu)和運(yùn)算(抽象運(yùn)算),而不考慮計(jì)算機(jī)的具體實(shí)現(xiàn)。
2?? 抽象數(shù)據(jù)類型 = 邏輯結(jié)構(gòu) + 抽象運(yùn)算
3?? 抽象數(shù)據(jù)類型實(shí)質(zhì)上就是對(duì)一個(gè)求解問題的形式化描述(與計(jì)算機(jī)無關(guān)),程序員可以在理解基礎(chǔ)上實(shí)現(xiàn)它。
3.算法及其描述
3.1 什么是算法
數(shù)據(jù)元素之間的關(guān)系有邏輯關(guān)系和物理關(guān)系,對(duì)應(yīng)的運(yùn)算有基于邏輯結(jié)構(gòu)的運(yùn)算描述和基于存儲(chǔ)結(jié)構(gòu)的運(yùn)算實(shí)現(xiàn)。
1?? 數(shù)據(jù)是各種信息的表現(xiàn)形式
2?? 算法表現(xiàn)為“處理”和“數(shù)據(jù)”的結(jié)合
通常把基于存儲(chǔ)結(jié)構(gòu)的運(yùn)算實(shí)現(xiàn)的步驟或過程稱為算法。更一般地,算法是 解決問題的處理步驟
?? 算法的五個(gè)重要的特性
- 有窮性:在有窮步之后結(jié)束,算法能夠停機(jī)。
- 確定性:無二義性。
- 可行性:可通過基本運(yùn)算有限次執(zhí)行來實(shí)現(xiàn),也就是算法中每一個(gè)動(dòng)作能夠被機(jī)械地執(zhí)行。
- 輸入:0個(gè)或多個(gè)輸入【表示存在數(shù)據(jù)處理】
- 輸出:1個(gè)或多個(gè)輸出【表示存在數(shù)據(jù)處理】
?? 算法和程序的區(qū)別
-
程序是指使用某種計(jì)算機(jī)語言對(duì)一個(gè)算法的具體實(shí)現(xiàn),即具體要怎么做。
程序不一定滿足有窮性
-
算法側(cè)重于對(duì)解決問題的方法描述,即要做什么。
算法一定滿足有窮性
-
算法用計(jì)算機(jī)語言描述 --> 程序
3.2 算法描述
? 如何描述輸出型參數(shù)
📍 C++語言中提供了一種引用運(yùn)算符“&”用于描述輸出型參數(shù)。
?? 算法可以采用自然語言、流程圖或者表格方式等來描述。但是,一個(gè)學(xué)習(xí)計(jì)算機(jī)的學(xué)生應(yīng)該使用某種計(jì)算機(jī)語言來描述算法。
4.算法分析
4.1 算法分析概述
算法分析目的:分析算法的時(shí)空效率以便改進(jìn)算法性能。
4.2 算法時(shí)間復(fù)雜度分析
- 一個(gè)算法是由控制結(jié)構(gòu)(順序、分支和循環(huán)三種)和原操作構(gòu)成的。
- 順序結(jié)構(gòu):按照所述順序處理
分支結(jié)構(gòu):根據(jù)判斷條件改變執(zhí)行流程
循環(huán)結(jié)構(gòu):當(dāng)條件成立時(shí),反復(fù)執(zhí)行給定的處理操作 - 指固有數(shù)據(jù)類型的操作,如+、-、*、/、++和–等
- 算法執(zhí)行時(shí)間取決于兩者的綜合效果。
4.2.1 算法分析方式
-
事后分析統(tǒng)計(jì)方法:編寫算法對(duì)應(yīng)程序,統(tǒng)計(jì)其執(zhí)行時(shí)間。
編寫程序的語言不同,執(zhí)行程序的環(huán)境不同以及其它因素造成不能用絕對(duì)執(zhí)行時(shí)間進(jìn)行比較。
-
🚩 事前估算分析方法:撇開上述因素,認(rèn)為算法的執(zhí)行時(shí)間是問題規(guī)模n的函數(shù)。
4.2.2 分析算法的執(zhí)行時(shí)間
- 求出算法所有原操作的執(zhí)行次數(shù)(也稱為頻度),它是問題規(guī)模n的函數(shù),用T(n)表示。
- 算法執(zhí)行時(shí)間大致 = 原操作所需的時(shí)間×T(n)。所以T(n)與算法的執(zhí)行時(shí)間成正比。為此用T(n)表示算法的執(zhí)行時(shí)間。
- 比較不同算法的T(n)大小得出算法執(zhí)行時(shí)間的好壞。
4.2.3 算法的執(zhí)行時(shí)間用時(shí)間復(fù)雜度來表示
算法中執(zhí)行時(shí)間T(n)是問題規(guī)模n的某個(gè)函數(shù)f(n),記作:T(n) = O(f(n))
記號(hào)“O”讀作“大O”,它表示隨問題規(guī)模n的增大算法執(zhí)行時(shí)間的增長率和f(n)的增長率相同 --> 趨勢(shì)分析
也就是只求出T(n)的最高階,忽略其低階項(xiàng)和常系數(shù),這樣既可簡(jiǎn)化T(n)的計(jì)算,又能比較客觀地反映出當(dāng)n很大時(shí)算法的時(shí)間性能。
本質(zhì)上講,是一種T(n)最高數(shù)量級(jí)的比較。
例如:T(n) = 2n2n^2n2+2n+1 = O(n2n^2n2)
📝 一般地:
- 一個(gè)沒有循環(huán)的算法的執(zhí)行時(shí)間與問題規(guī)模n無關(guān),記作O(1),也稱作常數(shù)階。
- 一個(gè)只有一重循環(huán)的算法的執(zhí)行時(shí)間與問題規(guī)模n的增長呈線性增大關(guān)系,記作O(n),也稱線性階。
- 其余常用的算法時(shí)間復(fù)雜度還有平方階O(n2n^2n2)、立方階O(n3n^3n3)、對(duì)數(shù)階O(log2nlog_2nlog2?n)、指數(shù)階O(2n2^n2n)等。
各種不同算法時(shí)間復(fù)雜度的比較關(guān)系如下:
算法時(shí)間性能比較:假如求同一問題有兩個(gè)算法:A和B,如果算法A的平均時(shí)間復(fù)雜度為O(n),而算法B的平均時(shí)間復(fù)雜度為O(n2n^2n2)。 一般情況下,認(rèn)為算法A的時(shí)間性能好比算法B。
某算法的時(shí)間復(fù)雜度為O(n2n^2n2),表明該算法的執(zhí)行時(shí)間與n2n^2n2成正比。
4.2.4 簡(jiǎn)化的算法時(shí)間復(fù)雜度分析
#mermaid-svg-VYHF0hf3lbhrYJsX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX .error-icon{fill:#552222;}#mermaid-svg-VYHF0hf3lbhrYJsX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VYHF0hf3lbhrYJsX .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-VYHF0hf3lbhrYJsX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VYHF0hf3lbhrYJsX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VYHF0hf3lbhrYJsX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VYHF0hf3lbhrYJsX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VYHF0hf3lbhrYJsX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VYHF0hf3lbhrYJsX .marker.cross{stroke:#333333;}#mermaid-svg-VYHF0hf3lbhrYJsX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VYHF0hf3lbhrYJsX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX .cluster-label text{fill:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX .cluster-label span{color:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX .label text,#mermaid-svg-VYHF0hf3lbhrYJsX span{fill:#333;color:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX .node rect,#mermaid-svg-VYHF0hf3lbhrYJsX .node circle,#mermaid-svg-VYHF0hf3lbhrYJsX .node ellipse,#mermaid-svg-VYHF0hf3lbhrYJsX .node polygon,#mermaid-svg-VYHF0hf3lbhrYJsX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VYHF0hf3lbhrYJsX .node .label{text-align:center;}#mermaid-svg-VYHF0hf3lbhrYJsX .node.clickable{cursor:pointer;}#mermaid-svg-VYHF0hf3lbhrYJsX .arrowheadPath{fill:#333333;}#mermaid-svg-VYHF0hf3lbhrYJsX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VYHF0hf3lbhrYJsX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VYHF0hf3lbhrYJsX .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-VYHF0hf3lbhrYJsX .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-VYHF0hf3lbhrYJsX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VYHF0hf3lbhrYJsX .cluster text{fill:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX .cluster span{color:#333;}#mermaid-svg-VYHF0hf3lbhrYJsX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VYHF0hf3lbhrYJsX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}算法中的基本操作一般是最深層循環(huán)內(nèi)的原操作在算法分析時(shí),計(jì)算T(n)時(shí)僅僅考慮基本操作的運(yùn)算次數(shù)算法執(zhí)行時(shí)間大致 = 基本操作所需的時(shí)間×其運(yùn)算次數(shù)4.2.5 最好、最壞和平均時(shí)間復(fù)雜度分析
4.2.6 算法空間復(fù)雜度分析
空間復(fù)雜度:用于量度一個(gè)算法運(yùn)行過程中臨時(shí)占用的存儲(chǔ)空間大小(算法中需要的輔助變量所占用存儲(chǔ)空間的大小)。一般也作為問題規(guī)模n的函數(shù),采用數(shù)量級(jí)形式描述,記作:S(n) = O(g(n))
若一個(gè)算法的空間復(fù)雜度為O(1),則稱此算法為原地工作或就地工作算法。該算法執(zhí)行所需輔助空間大小與問題規(guī)模n無關(guān)。
? 為什么空間復(fù)雜度分析只考慮臨時(shí)占用的存儲(chǔ)空間
?? 分析如下算法的空間復(fù)雜度
// 臨時(shí)占用的存儲(chǔ)空間:函數(shù)體內(nèi)分配的空間 int fun(int n){ int i,j,k,s;s=0;for (i=0;i<=n;i++)for(j=0;j<=i;j++)for (k=0;k<=j;k++)s++; return(s) }📝 算法中臨時(shí)分配的變量個(gè)數(shù)與問題規(guī)模n無關(guān),所以空間復(fù)雜度均為O(1)
5.數(shù)據(jù)結(jié)構(gòu)+算法=程序
5.1 程序和數(shù)據(jù)結(jié)構(gòu)
- 程序總是以某些數(shù)據(jù)為處理對(duì)象。將松散、無組織的數(shù)據(jù)按某種要求組成一種數(shù)據(jù)結(jié)構(gòu),對(duì)于設(shè)計(jì)一個(gè)簡(jiǎn)明、高效、可靠的程序是大有益處的。
- 沃思:程序就是在數(shù)據(jù)的某些特定的表示方法和結(jié)構(gòu)的基礎(chǔ)上,對(duì)抽象算法的具體表述,所以說程序離不開數(shù)據(jù)結(jié)構(gòu)。
- 程序是通過某種程序設(shè)計(jì)語言描述的,程序設(shè)計(jì)語言具有實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和算法的機(jī)制,其中類型聲明與對(duì)象定義用于實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu),而語句實(shí)現(xiàn)實(shí)現(xiàn)算法,描述程序的行為。
5.2 算法和程序
- 由程序設(shè)計(jì)語言描述的算法就是計(jì)算機(jī)程序。
- 對(duì)一個(gè)求解問題而言,算法就是解題的方法,沒有算法,程序就成了無本之末,無源之水,有了算法,將它表示成程序是不困難的。
- 算法是程序的靈魂。算法在整個(gè)計(jì)算機(jī)科學(xué)中的地位都是極其重要的。
5.3 算法和數(shù)據(jù)結(jié)構(gòu)
?? 數(shù)據(jù)結(jié)構(gòu)角度求解問題的過程
#mermaid-svg-VgE0RRf6W9w1VYJl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl .error-icon{fill:#552222;}#mermaid-svg-VgE0RRf6W9w1VYJl .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VgE0RRf6W9w1VYJl .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-VgE0RRf6W9w1VYJl .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VgE0RRf6W9w1VYJl .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VgE0RRf6W9w1VYJl .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VgE0RRf6W9w1VYJl .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VgE0RRf6W9w1VYJl .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VgE0RRf6W9w1VYJl .marker.cross{stroke:#333333;}#mermaid-svg-VgE0RRf6W9w1VYJl svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VgE0RRf6W9w1VYJl .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl .cluster-label text{fill:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl .cluster-label span{color:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl .label text,#mermaid-svg-VgE0RRf6W9w1VYJl span{fill:#333;color:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl .node rect,#mermaid-svg-VgE0RRf6W9w1VYJl .node circle,#mermaid-svg-VgE0RRf6W9w1VYJl .node ellipse,#mermaid-svg-VgE0RRf6W9w1VYJl .node polygon,#mermaid-svg-VgE0RRf6W9w1VYJl .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VgE0RRf6W9w1VYJl .node .label{text-align:center;}#mermaid-svg-VgE0RRf6W9w1VYJl .node.clickable{cursor:pointer;}#mermaid-svg-VgE0RRf6W9w1VYJl .arrowheadPath{fill:#333333;}#mermaid-svg-VgE0RRf6W9w1VYJl .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VgE0RRf6W9w1VYJl .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VgE0RRf6W9w1VYJl .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-VgE0RRf6W9w1VYJl .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-VgE0RRf6W9w1VYJl .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VgE0RRf6W9w1VYJl .cluster text{fill:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl .cluster span{color:#333;}#mermaid-svg-VgE0RRf6W9w1VYJl div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VgE0RRf6W9w1VYJl :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}數(shù)據(jù)結(jié)構(gòu)觀編程一般過程軟件工程思想- 問題求解 --> 算法設(shè)計(jì)
- 算法實(shí)現(xiàn) --> 選擇合適的存儲(chǔ)結(jié)構(gòu)
- 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)取決于數(shù)據(jù)的邏輯結(jié)構(gòu),并且為運(yùn)算高效實(shí)現(xiàn)服務(wù)。
- 程序員可以直接使用它來存放數(shù)據(jù) —— 作為存放數(shù)據(jù)的容器。
- 程序員可以直接使用它的基本運(yùn)算 —— 完成更復(fù)雜的功能。
5.4 數(shù)據(jù)結(jié)構(gòu)的發(fā)展
6.總結(jié)
6.1 從數(shù)據(jù)結(jié)構(gòu)角度求解問題的過程
?? 設(shè)計(jì)集合的順序存儲(chǔ)結(jié)構(gòu)類型如下:
typedef struct //集合結(jié)構(gòu)體類型 { int data[MaxSize]; //存放集合中的元素,其中MaxSize為常量【靜態(tài)分配方式】int length; //存放集合中實(shí)際元素個(gè)數(shù) } Set; //將集合結(jié)構(gòu)體類型用一個(gè)新類型名Set表示?? 采用Set類型的變量存儲(chǔ)一個(gè)集合
- createset(Set &s,int a[],int n):創(chuàng)建一個(gè)集合
- dispset(Set s):輸出一個(gè)集合
- inset(Set s,int e):判斷e是否在集合s中
- add(Set s1,Set s2,Set &s3):求集合的并集
- sub(Set s1,Set s2,Set &s3):求集合的差集
- intersection(Set s1,Set s2,Set &s3):求集合的交集
6.2 算法描述―輸出型參數(shù)
返回值 函數(shù)名(輸入?yún)?shù), 輸出參數(shù)) //輸出參數(shù) --> 采用引用類型參數(shù) {//實(shí)現(xiàn)代碼; } #mermaid-svg-hilVTTRxl2YwWIPu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hilVTTRxl2YwWIPu .error-icon{fill:#552222;}#mermaid-svg-hilVTTRxl2YwWIPu .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hilVTTRxl2YwWIPu .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hilVTTRxl2YwWIPu .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hilVTTRxl2YwWIPu .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hilVTTRxl2YwWIPu .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hilVTTRxl2YwWIPu .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hilVTTRxl2YwWIPu .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hilVTTRxl2YwWIPu .marker.cross{stroke:#333333;}#mermaid-svg-hilVTTRxl2YwWIPu svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hilVTTRxl2YwWIPu .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hilVTTRxl2YwWIPu .cluster-label text{fill:#333;}#mermaid-svg-hilVTTRxl2YwWIPu .cluster-label span{color:#333;}#mermaid-svg-hilVTTRxl2YwWIPu .label text,#mermaid-svg-hilVTTRxl2YwWIPu span{fill:#333;color:#333;}#mermaid-svg-hilVTTRxl2YwWIPu .node rect,#mermaid-svg-hilVTTRxl2YwWIPu .node circle,#mermaid-svg-hilVTTRxl2YwWIPu .node ellipse,#mermaid-svg-hilVTTRxl2YwWIPu .node polygon,#mermaid-svg-hilVTTRxl2YwWIPu .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hilVTTRxl2YwWIPu .node .label{text-align:center;}#mermaid-svg-hilVTTRxl2YwWIPu .node.clickable{cursor:pointer;}#mermaid-svg-hilVTTRxl2YwWIPu .arrowheadPath{fill:#333333;}#mermaid-svg-hilVTTRxl2YwWIPu .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hilVTTRxl2YwWIPu .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hilVTTRxl2YwWIPu .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hilVTTRxl2YwWIPu .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hilVTTRxl2YwWIPu .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hilVTTRxl2YwWIPu .cluster text{fill:#333;}#mermaid-svg-hilVTTRxl2YwWIPu .cluster span{color:#333;}#mermaid-svg-hilVTTRxl2YwWIPu div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hilVTTRxl2YwWIPu :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}確定問題規(guī)模n找基本操作語句求基本操作的執(zhí)行次數(shù)T(n)用復(fù)雜度表示T(n)總結(jié)
以上是生活随笔為你收集整理的数据结构与算法01:绪论【LEARN FROM 李春葆《数据结构教程》】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php做seo优化,php做seo优化能
- 下一篇: C 里 求 log2 N 的问题