作業資訊
這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/ |
---|---|
這個作業要求在哪裡 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07 |
這個作業的目標 | 陣列與連結串列、基於陣列和基於連結串列實現資料結構、無序表與有序表、樹、圖、子程式與引數 |
作業正文 | https://www.cnblogs.com/wangsiqi828828/p/18538332 |
教材學習內容總結
以下是關於陣列和連結串列的知識點總結:
一、陣列
- 定義:
• 一組具有相同資料型別的元素按順序儲存在連續的記憶體空間中。 - 特點:
• 隨機訪問:可以透過下標在常數時間內訪問任意元素。例如,訪問陣列中的第 n 個元素非常高效。
• 長度固定:建立陣列時需要指定長度,一旦確定,在程式執行過程中通常難以改變。
• 記憶體連續:儲存在連續的記憶體空間,有利於 CPU 的快取機制,提高訪問速度。 - 操作:
• 插入元素:在末尾插入相對容易,但在中間插入需要移動大量元素,時間複雜度為 O(n)。
• 刪除元素:類似插入,在中間刪除也需要移動大量元素,時間複雜度為 O(n)。 - 應用場景:
• 適合頻繁隨機訪問的情況,如儲存一組已知數量的元素。
二、連結串列 - 定義:
• 由一系列節點組成,每個節點包含資料和指向下一個節點的指標(對於雙向連結串列,還有指向前一個節點的指標)。 - 特點:
• 動態長度:可以根據需要動態地增加或刪除節點,無需預先指定長度。
• 非連續儲存:節點分散在記憶體中,透過指標連線。
• 插入和刪除高效:只需修改指標即可完成插入和刪除操作,時間複雜度為 O(1)(在已知插入或刪除位置的情況下)。 - 操作:
• 插入元素:在連結串列頭部、尾部或中間插入都相對容易,只需調整指標。
• 刪除元素:同樣,透過調整指標即可刪除節點。 - 應用場景:
• 頻繁進行插入和刪除操作的情況。
• 對於記憶體空間有限且不確定元素數量的情況也很適用。
總之,陣列和連結串列在不同的場景下各有優勢。在選擇使用時,需要根據具體的需求來權衡它們的特點。
以下是關於陣列和連結串列的知識點總結:
一、陣列 - 定義:
• 一組具有相同資料型別的元素按順序儲存在連續的記憶體空間中。 - 特點:
• 隨機訪問:可以透過下標在常數時間內訪問任意元素。例如,訪問陣列中的第 n 個元素非常高效。
• 長度固定:建立陣列時需要指定長度,一旦確定,在程式執行過程中通常難以改變。
• 記憶體連續:儲存在連續的記憶體空間,有利於 CPU 的快取機制,提高訪問速度。 - 操作:
• 插入元素:在末尾插入相對容易,但在中間插入需要移動大量元素,時間複雜度為 O(n)。
• 刪除元素:類似插入,在中間刪除也需要移動大量元素,時間複雜度為 O(n)。 - 應用場景:
• 適合頻繁隨機訪問的情況,如儲存一組已知數量的元素。
二、連結串列 - 定義:
• 由一系列節點組成,每個節點包含資料和指向下一個節點的指標(對於雙向連結串列,還有指向前一個節點的指標)。 - 特點:
• 動態長度:可以根據需要動態地增加或刪除節點,無需預先指定長度。
• 非連續儲存:節點分散在記憶體中,透過指標連線。
• 插入和刪除高效:只需修改指標即可完成插入和刪除操作,時間複雜度為 O(1)(在已知插入或刪除位置的情況下)。 - 操作:
• 插入元素:在連結串列頭部、尾部或中間插入都相對容易,只需調整指標。
刪除元素:同樣,透過調整指標即可刪除節點。 - 應用場景:
• 頻繁進行插入和刪除操作的情況。
• 對於記憶體空間有限且不確定元素數量的情況也很適用。
總之,陣列和連結串列在不同的場景下各有優勢。在選擇使用時,需要根據具體的需求來權衡它們的特點。
以下是關於子程式與引數的知識點:
一、子程式 - 定義:
• 子程式是一段可以獨立完成特定任務的程式程式碼模組。也被稱為函式、方法等。 - 特點:
• 程式碼複用:可以在不同的地方多次呼叫同一個子程式,避免重複編寫相同的程式碼,提高開發效率。
• 模組化:將複雜的程式分解為多個小的子程式,每個子程式負責一個特定的功能,使程式結構更加清晰,易於維護和修改。 - 作用:
• 封裝功能:將特定的操作封裝在子程式中,隱藏實現細節,只對外提供介面,提高程式的安全性和可維護性。
• 提高可讀性:透過使用有意義的子程式名稱,可以使程式更易於理解和閱讀。
二、引數 - 定義:
• 引數是在呼叫子程式時傳遞給子程式的資料。它可以影響子程式的執行結果。 - 分類:
• 形式引數(形參):在子程式定義中宣告的引數,用於接收實際引數的值。
• 實際引數(實參):在呼叫子程式時傳遞給形參的值。 - 作用:
• 傳遞資料:透過引數,可以將不同的資料傳遞給子程式,使子程式能夠根據不同的輸入進行不同的處理。
• 增加靈活性:引數使得子程式可以適應不同的情況,提高子程式的通用性。 - 傳遞方式:
• 值傳遞:將實參的值複製一份傳遞給形參,在子程式中對形參的修改不會影響實參的值。
• 引用傳遞:將實參的地址傳遞給形參,在子程式中對形參的修改會影響實參的值。
總之,子程式和引數是程式設計中非常重要的概念。合理地使用子程式和引數可以提高程式的可讀性、可維護性和可擴充套件性。
教材學習中的問題和解決過程(先問 AI)
問題1:列出計算機問題求解模型的階段
問題1解決方案:計算機問題求解模型通常包括以下幾個階段:
一、問題定義階段
- 明確問題:清晰地理解問題的本質、目標和約束條件。確定問題的輸入和輸出要求。
- 收集資訊:收集與問題相關的背景資訊、資料和資源。瞭解問題所處的領域和相關技術。
二、分析階段 - 分解問題:將複雜問題分解為較小的子問題,使其更易於管理和解決。
- 確定解決方案策略:根據問題的特點和需求,選擇合適的解決方案策略,如演算法、資料結構等。
- 進行可行性分析:評估所選擇的解決方案在技術、時間和資源等方面的可行性。
三、設計階段 - 設計演算法:根據分析階段確定的解決方案策略,設計具體的演算法來解決問題。演算法應具有正確性、高效性和可讀性。
- 選擇資料結構:根據問題的需求和演算法的特點,選擇合適的資料結構來儲存和處理資料。
- 設計程式結構:規劃程式的整體結構,包括模組劃分、函式介面和控制流程等。
四、實現階段 - 編寫程式碼:根據設計階段的結果,使用選定的程式語言編寫程式程式碼。
- 進行測試:對編寫的程式碼進行測試,包括單元測試、整合測試和系統測試等,以確保程式的正確性和穩定性。
- 除錯程式:在測試過程中,發現並修復程式中的錯誤和缺陷。除錯可以使用除錯工具和技術,如斷點除錯、日誌記錄等。
五、評估階段 - 評估解決方案:對解決問題的方案進行評估,包括演算法的效率、程式的效能、可維護性和可擴充套件性等方面。
- 進行最佳化:根據評估結果,對解決方案進行最佳化,以提高程式的質量和效能。
- 總結經驗:總結解決問題的過程和經驗教訓,為今後的問題求解提供參考。
基於AI的學習
程式碼除錯中的問題和解決過程
無
程式碼託管
(statistics.sh指令碼的執行結果截圖)
上週考試錯題總結
無
其他(感悟、思考等,可選)
無
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 200/200 | 2/2 | 20/20 | |
第二週 | 300/500 | 2/4 | 18/38 | |
第三週 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
參考:軟體工程軟體的估計為什麼這麼難,軟體工程 估計方法
-
計劃學習時間:XX小時
-
實際學習時間:XX小時
-
改進情況:
(有空多看看現代軟體工程 課件
軟體工程師能力自我評價表)
參考資料
- 《電腦科學概論(第七版)》
- ...