雲小白繼續開天闢地

2021-09-30 19:49:20 字數 1702 閱讀 3489

這幾天坐火車回家,沒有繼續寫博,今天繼續我的發博。首先我要問,什麼是資料結構?

答:資料結構就是計算機可以儲存和處理的資訊。

什麼是資料元素?

答:組成資料的基本單位就是資料元素。

什麼是資料結構?

答:資料結構就是研究資料與資料元素之間關係的一門學科。

資料結構的三方面內容

資料的邏輯結構

資料的儲存結構

資料的運算

資料的邏輯結構

資料的邏輯結構就是資料元素之間的邏輯關係。可以用二元組表示其定義為data-structure=(d,r)。其中,d是組成資料元素的有限集合,r是資料元素之間的關係集合。

資料元素還可以分為倆大類,其分類及關係如下圖

資料的儲存結構

資料在儲存器中的儲存有四種基本的映像方法

順序儲存結構。這種儲存方式主要用於線性資料結構,就是把資料元素按某種順序放在一塊連續的儲存單元中。其特點是邏輯上相鄰的資料元素儲存在物理上相鄰的儲存單元中,元素之間的關係由儲存單元的臨近關係來體現。

某些非線性書記結構也採用順序方式來儲存,例如完全二叉樹、多維陣列等。

鏈式儲存結構。鏈式儲存結構可以把邏輯上相鄰的倆個元素放在物理上不相鄰的儲存單元中。

鏈式儲存結構的特點:一部分存放資料元素(稱為資料域);另一部分存放指示儲存位址的指標(稱為指標域)。

雜湊儲存結構。

資料的運算

資料的運算是定義在資料邏輯結構上的操作,每種資料結構都有乙個運算的集合。

常用的運算有檢索、插入、刪除、更新、排序等。

運算的具體實現要在儲存結構上進行。

演算法的五個重要特性:有窮性、確定性、可行性、輸入、輸出。

評價演算法主要有倆個指標:

時間複雜度:在計算機上執行程式所消耗的時間。

空間複雜度:在計算機執行程式過程中所需要的最大儲存空間。

確定實現演算法在執行是所耗費的時間和所占用的儲存空間的方法

直接測試(事後統計)

事前分析估算(常用)

對於第二種方法,分別對時間和空間進行討論。

時間複雜度:

假定知道演算法每一條語句執行一次所花的平均時間,則有:

演算法執行所花的時間=語句執行一次所花的時間 * 語句執行次數

通常把語句執行頻度作為衡量乙個演算法時間複雜度的依據。

演算法時間複雜度記作:

t(n)=o(f(n))

常見的幾種時間複雜度有:o(1),o(logn),o(n),o(nlogn),o(n2),o(n3),o(2n)等。

o(1)常量階

o(n)線性階

o(n2)平方階

空間複雜度

乙個演算法的實現所占用的儲存空間大致有這樣三個方面:

指令、常數、變數所占用的儲存空間;

輸入資料所占用的儲存空間;

演算法執行時必須的輔助空間。

前兩種是演算法執行所必須的。因此

把演算法執行時所需的輔助空間的大小作為分析演算法空間複雜度的依據。

常見的幾種空間複雜度有:o(1),o(n),o(n2),o(n3)等。

沒有總結就沒有進步之開天闢地

本篇內容純非技術內容 說了這麼多到底要寫點什麼呢,今天是年後的第乙個週末,把老闆推薦的書看了一半,書裡寫的好多就是我生活中的縮影,有些情況比書中案例還要糟糕 劇情回顧,去年底工作review,老闆的評價是工作沒什麼問題,就是學生氣十足 想想也是,工作1年有餘,把工作還當學校實驗室一樣,感覺理職業,專...

編寫我們自己的作業系統 開天闢地

核心是作業系統最基礎的構件。因而,核心結構往往對作業系統的外部特性以及應用領域有著根本的影響。核心的結構往往可分為單核心 monolithic kernel 微核心 microkernel 超微核心 nanokernel 以及外核 exokernel 等。超微核心與外核心等其他結構是在二十世紀末的時...

Ubuntu Linux繼續統領雲作業系統江湖

最新的openstack使用者調查顯示,openstack終於在私有雲方面取得實質性的進展。調查還顯示,openstack仍然以執行ubuntu linux為主。openstack的ubuntu市場份額 2016年4月 canonical公司雲營銷經理bill bauman表示 大部分opensta...