1. 程式人生 > 其它 >2021-2022-1 20211308《資訊保安專業導論》第七週學習總結

2021-2022-1 20211308《資訊保安專業導論》第七週學習總結

2021-2022-1 20211308《資訊保安專業導論》第七週學習總結

作業資訊

|作業屬於哪個課程|
資訊保安專業導論
|作業要求連結|
第七週作業
|作業正文|
實現進位制轉換虛擬碼
斐波那契數列遞迴實現
求最大公約數虛擬碼
本文連結
|作業目標|

  • 陣列與連結串列
  • 基於陣列和基於連結串列實現資料結構
  • 無序表和有序表
  • 子程式與引數

教材內容總結

  • 陣列
    陣列是同構專案的有名集合,可以通過索引來訪問單個專案在集合中的位置,採用0開始到9結束的方式。
    如果陣列被定義為numbers,可以通過表示式numbers[position]來訪問
    下面是像陣列中加入值的演算法
interger numbers[10]
Write "Enter 10 interger numbers, one per line"
Set position to 0
While(position <10)
  Read in numbers[position]
  Set position to position + 1
  • 可以對陣列進行搜尋、排序、處理
    • 搜尋:尋找陣列中的項,可以是特定的數值
    • 排序:按照順序將元素放進陣列
    • 處理:包含對陣列中的項所做的所有其他計算
  • 資料結構
    一種抽象資料型別中的複合資料域的實現
  • 容器
    存放和操作其他物件的物件

  • “後進先出”:可以在第一個位置插入元素,也可以刪除第一個元素
    可以類比為餐具架,插入的操作叫做Push,刪除操作叫做Pop,而我們需要確定棧是否為空,否則會出現錯誤
  • 佇列
    “先進先出”插入位置在隊末進行,刪除操作在佇列頭部進行。
  • 列表
    三個屬性
    • 專案是同構的
    • 專案是線性的
    • 列表是變長的
      列表也可以被形象化為鏈式結構
  • 鏈式結構
    一種將資料項和找到下一項位置的資訊儲存到同一容器的實現方法
  • 無序列表
    不注重順序,專案只是隨意地被放入其中。
  • 有序列表
    專案之間具有語義的關係,除了第一個專案之外的所有專案都存在某種排序關係,除了最後一個專案,所有的專案都有相同的關係。

  • 之前所描述的列表、棧、佇列都是線性關係,只模擬了一種資料關係,而更加具體的更加複雜的關係可以用樹來描述
    就類似樹狀圖,我們在計算領域,所說的通常是二叉樹
    樹的頭部是一個起始點,叫做根
    沒有”子女“的樹節點稱為葉節點
  • 在二叉檢索樹中搜索
    首先比較根節點,如果大於一定在於右子樹中,繼續比較直到找到匹配的值

  • 剛才提到樹是表示存在層次關係的一種有效方式,也就是說一個節點至多隻有一個指向他的節點,如果去掉這種約束,就得到了另外一種資料結構--圖,圖中的節點叫做頂點、圖中的線段叫做邊。
    • 有向圖
    • 無向圖
  • 圖的三種經典搜尋演算法
    • 深度優先搜尋
      首先用深度優先搜尋來搜尋第一個與起點相鄰的頂點,如果他是終點則結束、否則檢查所有與第一個頂點相鄰的頂點
    • 廣度優先搜尋
      在廣度優先搜尋中,我們想要回溯到儘可能遠,因此棧不再是一個適合尋找較早路徑的資料結構,它是按照元素出現的相反順序來儲存元素,即最晚的路徑在頂部
      ,因此不再使用棧,而是使用佇列,就可以解決這個問題
    • 單源最短路搜尋
      是一個數學問題,書上講的不是很詳細
      https://blog.csdn.net/fuckguidao/article/details/79053877
      附上一篇部落格連結,看完這篇部落格,我還是深受啟發。
  • 子程式
    如何在演算法和子演算法之間傳遞資訊,在討論語言的構造時,我們常用子程式來介紹。
    比如
Set x to m*sin(t)
Set y to abs(z)
sin()和abs()都是有返回的子程式
  • 引數
    • 形參:列在子程式名後的括號中的識別符號
    • 實參:子程式在呼叫中列在括號中的識別符號
  • 值參:由呼叫單元傳入實參的副本
  • 引用引數:由呼叫單元傳入實參的地址的實參












上週錯題總結

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20
第二週 300/500 2/4 20/40
第三週 500/1000 3/7 20/60
第四周 300/1300 5/12 25/85
第五週 150/1450 3/15 20/105
第六週 150/1600 3/18 15/120
第七週 400/2000 4/22 20/140

感悟

這周集中學習了一下python,對python的語法進行了熟悉,準備在接下來的學習中去運用程式碼,繼續加油。