資料結構與演算法分析

2022-05-24 21:27:12 字數 1032 閱讀 1717

資料結構:大量資料的組織方法;

演算法分析:演算法執行時間的估算。涉及到計算效率。

設想,如果能把時間限制從16年減至不到1秒,不很神奇嗎?

在很多問題中,乙個重要的觀念是:寫出乙個可以工作的程式並不夠。如果這個程式在巨大的資料集上執行,執行時間就成了重要的 問題。

演算法,是為求解乙個問題需要遵循的、被清楚地指定的簡單 指令的集合 。

對於乙個問題,一旦給定某種演算法,確定其是正確的,那麼接下來重要的一步就是該演算法花費的時間和空間等資源量 的問題。也就是說,設計演算法主要關心兩個方面:執行快不快(效能),占用記憶體如何(資源花費)。

定義:如果存在正整數c和n0,使得當n>=n0時候,t(n)<=cf(n),則記為t(n)=o(f(n))(注意這裡已經省去了常數c 的影響)

大o表示法指出了演算法有多快。大o表示法說的是最糟的情形。除了最糟糕情況下的執行時間,還要考慮平均情況 下的執行時間,這很重要。

如何理解n???n表示資料長度!!!

當我們說t(n)=of((n))時候,我們是在保證函式t(n)是以不快於f(n)的速度增長;因此,f是t的乙個上界。

如下:t(n)=o(2n2)或者t(n)=o(n2+n),均是不合習慣的,應該表示為t(n)=o(n2)

執行時間計算例子:

計算乙個i3求和的例子:

sum(int

n)

宣告不計時間,第1和第4行各佔1個時間單元:1+1

第3行,4個運算;判斷n次,4n;

第2行,初始化1+n+n(自增),2n+2;

總共:2+4n+2n+2=6n+4;因此,我們說該函式是o(n)

基本演算法設計策略:

1.貪心法

思想:總是做出在當前看來是最好的選擇。也就是說,貪心法並不從整體最優上加以考慮,它所做出的選擇只是在某種意義上的區域性最優選擇。

雖然貪心法不是對所有問題都能得到整體最優解,但對範圍相當廣的許多問題它能產生整體最優解。

比如找硬幣問題

2.分治法

動態規劃

回溯法分支限界法

隨機化演算法等

資料結構與演算法分析

資料結構與演算法分析可以稱得上是程式設計師必須修煉的內功心法。資料的儲存結構 資料元素在計算機中的儲存方式 資料的操作集合 對一種資料型別的資料所有操作,例如對資料的增刪改查等等!演算法分析主要分析 下面是一些常用資料結構 一 線性表 1.陣列實現 2.鍊錶 二 棧與佇列 三 樹與二叉樹 1.樹2....

資料結構與演算法分析 note

1 explicit建構函式是用來防止隱式轉換的。請看下面的 class test1 普通建構函式 private int num class test2 explicit 顯式 建構函式 private int num int main test1的建構函式帶乙個int型的引數,23行會隱式轉換成...

資料結構與演算法分析3 3 3 5

標頭檔案 ifndef list h typedef struct node ptrtonode typedef ptrtonode list typedef ptrtonode position list creatlist void void insert int i,position p,li...