資料結構(一) 資料結構緒論與演算法

2021-09-27 11:53:14 字數 3201 閱讀 3774

資料結構可以說是計算機軟體相關專業的基礎課程,幾乎可以說要想從事程式設計或開發工作,都無法避開這部分的知識。但是這部分知識也是相對來說較難的知識,即使是學會了其中的內容,要在開發和程式設計工作中很好地運用資料結構的知識對程式猿來說也是較難的,反正對我來講是挺難的。在考研的過程中資料結構是我的一門主要的專業課,在那個時候可以說理解記憶並背誦了資料結構的每乙個知識點,但那是相對於應試教育而言的,在實際的應用中我也發現光靠死記硬背是很吃力不討好的。一年過去了,大部分概念已經遺忘,只有零碎的知識停留在腦海中,還是那句話好記性不如爛筆頭,只不過這一次的爛筆頭是我的鍵盤,通過這次的複習和**練習,相信能對資料結構有更深入的了解,在實際應用中有更大的提公升。

資料結構:是相互之間存在的一種或多種特定關係的資料元素的集合。

資料:是描述客觀事物的符號,是能被計算機識別並輸入到計算機中處理的符號集合。

資料元素:是組成資料的、有一定意義的基本單位,在計算機當中通常作為整體處理。

資料項:乙個資料元素由若干個資料項組成,是資料不可分割的最小單位。

資料物件:是性質相同的資料元素的集合。

按照視點的不同,我們把資料結構分為邏輯結構和物理結構。

集合結構線性結構樹形結構圖形結構資料的儲存結構應正確反映資料元素之間的邏輯關係,這是最關鍵的。

資料元素的儲存結構形式有兩種:

1、順序儲存結構

是把資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的。

2、鏈式儲存結構

是把資料元素存放在任意的儲存單元裡,這組單元可以是連續的,也可以是不連續的。資料元素的村屬關係並不能反映其邏輯關係,因此需要乙個指標存放資料元素的位址,這樣就可以靈活找到相關資料的位置。

資料型別:指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。

抽象資料型別(adt):指乙個數學模型及定義在該模型上的一組操作。

描述抽象資料型別的標準格式:

adt    抽象資料型別名

data

資料元素之間邏輯關係的定義

operation

操作1

初始條件

操作描述結果

操作2

.......

操作n

.......

endadt

演算法:是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。

演算法的特性:

1、具有零個或多個輸入,有乙個或多個輸出

2、有窮性

3.確定性

4.可行性

事後統計方法:主要是通過設計好的測試程式和資料利用計算機計時器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低。但是缺陷明顯不予採納。

事前分析估計演算法:在計算機程式編制前,依據統計方法對演算法進行估算。

程式執行的時間依賴於演算法的好壞和問題的輸入規模。根據函式的漸進增長,判斷乙個演算法的效率時,函式中的常數和其他次要項可以忽略,主要取決於最高端項的階數。

定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析 t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度也就是演算法的時間量度,記作:t(n)=o(f(n)) 。他表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱時間複雜度。這樣用大寫o( )來體現演算法時間複雜度的記法,我們稱之為大o記法。

1、用常數1取代執行時間中的所有加法常數。

2、在修改後的執行次數函式中,只保留最高端項。

3、如果最高端項存在且不是1,則去除與這個項相乘的常數。

得到的結果就是大o階。

常數階:

int sum = 0,n = 100;

sun = (1+n)*n/2;

printf("%d",sum);

演算法的執行次數函式是f(n)=3,但是沒有最高端項,所以時間複雜度為o(1)。

線性階:

下面**它的迴圈的時間複雜度為o(n),因為迴圈體中的**要執行n次。

int i;

for(i = 0;i < n;i++)

對數階:

int count = 1;

where(count < n)

在上面的**中count每次乘2,有多少個2相乘後大於n就會退出迴圈,由平方階:

int i,j;

for(i = 0;i < n; i++)

}

內外迴圈的時間複雜度都為o(n),所以這段**的時間複雜度為o(n^2),

如果外迴圈的迴圈次數改為m,時間複雜度就為o(

常用的時間複雜度所耗費的時間從小到大依次是:

o(1)我們在寫**的時候,完全也可以用空間來換時間。

演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:s(n) = o(f(n)),其中n為問題規模,f(n)為語句關於n所佔儲存空間的函式。

資料結構與演算法(一) 資料結構與演算法概念

資料結構是計算機儲存 組織資料的方式。資料結構是指資料與資料之間的關係。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。邏輯結構 示意圖1 集合結構 2 線性結構 3 樹形結構 4...

資料結構與演算法(一) 緒論

什麼是資料結構?資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的科學。程式設計 資料結構 演算法 傳統上,資料結構分為邏輯結構和物理結構。邏輯結構 是指資料物件中資料元素之間的相互關係。物理結構 是指資料的邏輯結構在計算機中的儲存形式。四大邏輯結構 1.集...

資料結構與演算法 一 緒論

目錄 什麼是資料結構 邏輯結構 物理結構 演算法 演算法的五個基本特徵 演算法設計的要求 簡單來說,程式 資料結構 演算法 傳統上,我們把資料結構分成邏輯結構和物理結構。邏輯結構 是指資料物件中資料元素之間的互相關係,也是我們今後最需要關注和討論的問題。物理結構 是指資料的邏輯結構在計算機中的儲存形...