目錄
數(shù)據(jù)結(jié)構(gòu)的基本概念
數(shù)據(jù)結(jié)構(gòu)的三要素
算法的基本概念
數(shù)據(jù)結(jié)構(gòu)的基本概念
????????在學習某個知識之前,我們是否都有問過自己我們到底在學習的目的是什么?學習數(shù)據(jù)結(jié)構(gòu)也一樣,我們學習數(shù)據(jù)結(jié)構(gòu)主要是為了用程序把現(xiàn)實世界的問題信息化;用計算機高效地處理這些信息從而創(chuàng)造價值。ok,接下來就正式學習數(shù)據(jù)結(jié)構(gòu)這門課程:
數(shù)據(jù):數(shù)據(jù)是信息的載體,是描述客觀事物屬性的數(shù)、字符及所有能輸入到計算機中并被計算機程序識別和處理的符合的集合。數(shù)據(jù)是計算機程序加工的原料。
數(shù)據(jù)元素:數(shù)據(jù)的基本單位,通常作為一個整體進行考慮和處理。
數(shù)據(jù)項:一個數(shù)據(jù)元素可由若干數(shù)據(jù)項組成,數(shù)據(jù)項是構(gòu)成數(shù)據(jù)元素的不可分割的最小單位。
數(shù)據(jù)對象:具有相同性質(zhì)的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。
它們之間的關(guān)系如下圖所示:
數(shù)據(jù)結(jié)構(gòu):是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。 數(shù)據(jù)結(jié)構(gòu)這門課著重關(guān)注的是數(shù)據(jù)元素之間的關(guān)系,和對這些數(shù)據(jù)元素的操作,而不關(guān)心具體的數(shù)據(jù)項內(nèi)容。
數(shù)據(jù)結(jié)構(gòu)的三要素
數(shù)據(jù)結(jié)構(gòu)三要素主要分為邏輯結(jié)構(gòu)、數(shù)據(jù)的運算、物理結(jié)構(gòu)(存儲結(jié)構(gòu)),以及每個結(jié)構(gòu)對應的知識,接下來來將對這三要素進行簡單的介紹一下:
邏輯結(jié)構(gòu)分為好幾種情況,接下來將逐一講解,以下是數(shù)據(jù)元素之間常見的邏輯關(guān)系:
集合結(jié)構(gòu):各個元素同屬于一個集合,別無其它關(guān)系。
線性結(jié)構(gòu):數(shù)據(jù)元素之間是一對一的關(guān)系,除了第一個元素,所有元素都有唯一前驅(qū);除了最后一個元素,所有元素都有唯一后繼。
樹形結(jié)構(gòu):數(shù)據(jù)元素之間是一對多關(guān)系。
圖狀結(jié)構(gòu):數(shù)據(jù)元素之間是多對多關(guān)系。
數(shù)據(jù)的運算:針對于某種邏輯結(jié)構(gòu),結(jié)合實際需求,定義基本運算。
物理結(jié)構(gòu)是為了用計算機表示數(shù)據(jù)元素的邏輯關(guān)系,以下是物理結(jié)構(gòu)創(chuàng)建的存儲方式:
順序存儲:把邏輯上相鄰的元素存儲在物理位置上也相鄰的存儲單元中,元素之間的關(guān)系由存儲單元的鄰接關(guān)系來體現(xiàn)。
鏈式存儲:邏輯上相鄰的元素在物理位置上可以不相鄰,借助指示元素存儲地址的指針來表示元素之間的邏輯關(guān)系。
索引存儲:在存儲元素信息的同時,還建立附加的索引表。索引表中的每項稱為索引項,索引項的一般形式是(關(guān)鍵字,地址)。
散列存儲:根據(jù)元素的關(guān)鍵字直接計算出該元素的存儲地址,又稱哈希存儲。
若采用順序存儲,則各個數(shù)據(jù)元素在物理上必須是連續(xù)的;若采用非順序存儲,則各個數(shù)據(jù)元素在物理上可以是離散的。數(shù)據(jù)的存儲結(jié)構(gòu)會影響存儲空間分配的方便程度;對數(shù)據(jù)運算的速度。
算法的基本概念
算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中的每條指令表示一個或多個操作。
算法具有如下特性:
有窮性:算法必須總在執(zhí)行有窮步之后結(jié)束,且每一步都可在有窮時間內(nèi)完成。算法必須是有窮的,而程序可以是無窮的。
確定性:算法中的每條指令必須有確切的含義,對于相同的輸入只能得出相同的輸出。
可行性:算法中描述的操作都可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)。
輸入:一個算法有零個或多個輸入,這些輸入取自于某個特定的對象的集合。
輸出:一個算法有一個或多個輸出,這些輸出是與輸入有著某種特定關(guān)系的量。
一個好的算法應該具備如下特質(zhì):
正確性:算法應能夠正確地解決求解問題。
可讀性:算法應具有良好的可讀性,以幫助人們理解。
健壯性:輸入非法數(shù)據(jù)時,算法能適當?shù)刈龀龇磻蜻M行處理,而不會產(chǎn)生莫名其妙的輸出結(jié)果。
高效性與低存儲量需求:花的時間少(時間復雜度低)和不費內(nèi)存(空間復雜度低)。
總結(jié)圖片如下:
關(guān)于時間復雜度和空間復雜度的講解操作,我在之前的文件就已經(jīng)講解過了,不知道的朋友推薦看一下我之前的文章:時間復雜度和空間復雜度(我不信看完這篇文章你還不懂) ,當然也可以看一下下面整理的知識梳理文檔:
文章來源:http://www.zghlxwxcb.cn/news/detail-493034.html
這篇文章主要講解了數(shù)據(jù)結(jié)構(gòu)相關(guān)的基本概念,下篇文章將著重講解數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識。文章來源地址http://www.zghlxwxcb.cn/news/detail-493034.html
到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)--》從數(shù)據(jù)結(jié)構(gòu)開始,打好算法基礎的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!