學習筆記 什麼是演算法 2019 11 20

2021-09-29 19:32:50 字數 3265 閱讀 3388

●所以到底什麼是資料結構??

●應用例項:最大子列和問題

1.乙個有限指令集

2.接受一些輸入(有些情況下不需要輸入)

3.產生輸出

4.一定在有限步驟之後終止

5.每一條指令必須

1)有充分明確的目標,不可以有歧義

2)計算機能處理的範圍之內

3)描述應不依賴於任何一種計算機語言以及具體的實現手段

演算法的五個基本特徵

①輸入輸入的引數,個數(>=0),例如:直接列印,就無引數傳入。

②輸出輸出和返回值,個數(>0),必須要有輸出,至少要有個列印。

③有窮性

有限的執行步驟之後,不會出現無限迴圈,在有限時間內完成。

④確定性

每一步都必須具有具體的含義,不會出現二義性。

⑤可行性

剛才講了要在有限時間內完成,即每一步是可行的,每一步都是有限時間的。

演算法設計的要求

①正確性

②可讀性:便於程式設計師之間閱讀,理解,交流,有助於人們理解演算法,易修改除錯。

③健壯性:對輸入資料(引數)進行合法性校驗。當輸入資料不合法時,演算法也會進行相關的處理,而不是出現異常。

④盡量滿足時間效率高和儲存量低的需求(時間複雜度和空間複雜度低)

根據演算法寫成的程式在執行時占用儲存單元的長度。這個長度往往與輸入資料的規模有關。空間複雜度過高的演算法可能導致使用的記憶體超限,造成程式非正常中斷。

根據演算法寫成的程式在執行時耗費時間的長度。這個長度往往也與輸入資料的規模有關。時間複雜度過高的低效演算法可能導致我們在有生之年都等不到執行結果。

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

常數階:o(1)(單純的分支結構也是執行一次)

if(.

...)

/* 執行一次 */

else

線性階:o(n)(迴圈結構)

for

(i =

0; i < n; i++

)

對數階:o(log n)(迭代)

while

(count < n)

平方(次方)階:o(n^2) , o(n^3)…

for

(i =

0; i < n; i++

)}

指數階:o(2^n)…

等等…

◆若兩段演算法分別有複雜度t1(n) = o(f1(n)) 和t2(n) =o(f2(n)),則

① t1(n) + t2(n) = max( o(f1(n)), o(f2(n)) )

② t1(n)  t2(n) = o( f1(n)  f2(n) )

◆乙個for迴圈的時間複雜度等於迴圈次數乘以迴圈體**的複雜度

◆if-else 結構的複雜度取決於if的條件判斷複雜度和兩個分枝部分的複雜度,總體複雜度取三者中最大

資料物件在計算機中的組織方式

 邏輯結構

 物理儲存結構

資料物件必定與一系列加在其上的操作相關聯

 完成這些操作所用的方法就是演算法

①邏輯結構:

資料的邏輯結構,簡單地理解,就是指的資料之間的邏輯關係。

資料之間的邏輯關係可簡單的分為三類:

▲一對一 (線性結構,串)

▲一對多 (層次結構 樹)

▲多對多 (圖)

②物理結構

指的是資料在計算機儲存器中的存放方式(例如:記憶體中),可以選擇集中存放,還是分散存放。

具體表現:順序儲存(位址連續)和鏈式儲存(指標表示邏輯關係)。

//演算法一 最複雜

intmaxsubseqsum1

(int a,

int n )

if( thissum > maxsum )

/* 如果剛得到的這個子列和更大*/

}/* j迴圈結束*/

}/* i迴圈結束*/

return maxsum;

}

// t ( n ) = o ( n^2 )

//演算法二 也複雜

intmaxsubseqsum2

(int a,

int n)

}/* j迴圈結束*/

}/* i迴圈結束*/

return maxsum;

}

// t ( n ) = o( n log n )

//演算法三:分而治之 複雜度較低 **實現較難

//演算法四 複雜度最低

//每輸入乙個資料就進行即時處理,在任何乙個地方中止輸入,演算法都能正確給出當前的解。

intmaxsubseqsum4

(int a,

int n)

else

if(thissum <0)

/* 如果當前子列和為負*/

}return maxsum;

}

執行時間比較

na表示已經無法運算了

學習筆記 什麼是Dubbo?

說人話的描述 二手房交易過程,賣家 中介 買家 房管局之間最大程度保證交易安全,消除交易糾紛 解除耦合 交易結束後各回各家。行業術語 dubbo是alibaba開源的分布式服務框架,最大特點是按照分層的方式架構,使用這種方式可以是各個層之間解耦合 或者最大限度松耦合 從服務模型的角度看,dubbo採...

PMBOK學習筆記 什麼是專案

一 概念 專案是為創造獨特的產品 服務和成果而進行的臨時性工作。二 特點 1 臨時性 專案的 臨時性 是指專案有明確的起點和終點。臨時性並不一定意味著持續時間智短。專案所創造的產品 服務或成果一般不具有臨時性。2 獨特性 每個專案都會創造獨特的產品 服務 或成果。儘管某些專案可交付成果中可能存在重複...

學習筆記 什麼是儲存過程?

一 建立 1 簡單建立 語法 creat procedure procedure name number varying default output n with for replication as sql statement n 示例 use mr sql go creat procedure...