什么是數(shù)據(jù)結(jié)構(gòu)?

基本概念

什么是數(shù)據(jù)?

搞懂?dāng)?shù)據(jù)結(jié)構(gòu)前需先理解數(shù)據(jù)的概念是什么?本身是用于描述自然界客觀事物,站在計算機領(lǐng)域角度解讀則是程序操作的對象,具體指可以輸入到計算機里的數(shù)值、字符、符號、聲音、圖像、視頻等等,且可以被處理的信息統(tǒng)稱為數(shù)據(jù)。

通過歸納,以面向?qū)ο蟮木幊趟枷肟梢缘贸鲆粋€數(shù)據(jù)由4部分組成:

1、數(shù)據(jù)類:屬性相同的數(shù)據(jù)項的集合,例如:人、車、書等都可以稱之為數(shù)據(jù)類,它是用來描述自然界客觀事物的一種抽象描述;
2、數(shù)據(jù)對象:數(shù)據(jù)類的子集,比如:人這個數(shù)據(jù)類有個叫張三的人,描述張三各種信息的集合稱之為數(shù)據(jù)對象。它是數(shù)據(jù)中的個體,由數(shù)據(jù)項(屬性)組成,在程序中通常將其作為一個整體來處理。組成數(shù)據(jù)的基本單位,是數(shù)據(jù)集合的個體。在計算機程序中通常作為一個整體來處理,比如一條描述學(xué)生完整信息的數(shù)據(jù)記錄就是一個數(shù)據(jù)元素,在空間中某個點的三維坐標(biāo)也是一個數(shù)據(jù)元素,數(shù)據(jù)元素通常由若干個數(shù)據(jù)項組成,比如描述學(xué)生相關(guān)信息的姓名、學(xué)號等都是數(shù)據(jù)元素的數(shù)據(jù)項;三維坐標(biāo)系中的每個坐標(biāo)值也都是數(shù)據(jù)項。數(shù)據(jù)項
3、數(shù)據(jù)項(屬性):數(shù)據(jù)類的子集,比如:人有姓名、性別、年齡等,這些稱之為數(shù)據(jù)項。它具有原子性,在數(shù)據(jù)中是不可再分的最小單位。
4、數(shù)據(jù)結(jié)構(gòu):用來描述數(shù)據(jù)內(nèi)部的組織結(jié)構(gòu),接下來會詳細介紹到。

什么是數(shù)據(jù)結(jié)構(gòu)?

數(shù)據(jù)一詞+結(jié)構(gòu)一詞就構(gòu)成了數(shù)據(jù)結(jié)構(gòu),這個詞匯是計算機科學(xué)與計算機技術(shù)領(lǐng)域中廣泛使用的專業(yè)術(shù)語。根據(jù)字面意思來講:它是用來描述一個數(shù)據(jù)的內(nèi)部結(jié)構(gòu),即有哪些成分數(shù)據(jù),和成分數(shù)據(jù)的組織結(jié)構(gòu)。

下面以Javascript編程語言寫兩個簡單的數(shù)據(jù)結(jié)構(gòu)(僅從代碼角度幫助理解數(shù)據(jù)結(jié)構(gòu),而實際的數(shù)據(jù)結(jié)構(gòu)并非如下所示,在此只是為了方便理解上面的概念)。

// 數(shù)據(jù)結(jié)構(gòu)一
// 0-1的成分數(shù)據(jù)是Person,2-3的成分數(shù)據(jù)是Car
[
    {name: "小明", age: 12, sex: "男"},
    {name: "小紅", age: 12, sex: "女"},
    {brand: "上海大眾", model: "cc", price: 100000},
    {brand: "奧迪", model: "A8", price: 200000}
]

// 數(shù)據(jù)結(jié)構(gòu)二
// 從下面可以看出,相較于數(shù)據(jù)結(jié)構(gòu)一數(shù)據(jù)的組織結(jié)構(gòu)表達的更清晰,對象中分為兩個數(shù)組,一是person,二是car
{
    person: [
        {name: "小明", age: 12, sex: "男"},
        {name: "小紅", age: 12, sex: "女"}
    ],
    car: [
        {brand: "上海大眾", model: "cc", price: 100000},
        {brand: "奧迪", model: "A8", price: 200000}    
    ]
}

從數(shù)據(jù)結(jié)構(gòu)一和數(shù)據(jù)結(jié)構(gòu)二中可以發(fā)現(xiàn)數(shù)據(jù)組織結(jié)構(gòu)不一樣,成分數(shù)據(jù)則是具有相同屬性的數(shù)據(jù),如:person和car。常見的數(shù)據(jù)結(jié)構(gòu)包含:線性表、棧、隊列、樹狀、圖狀。

基本概念講清楚后,補充一點,數(shù)據(jù)結(jié)構(gòu)是一門學(xué)科,主要有3方面的研發(fā)方向:一,數(shù)據(jù)的邏輯結(jié)構(gòu);二,數(shù)據(jù)物理存儲結(jié)構(gòu);三,如何操作數(shù)據(jù),也稱算法。在此強調(diào)一下算法一詞,算法的設(shè)計取決于數(shù)據(jù)的邏輯結(jié)構(gòu),算法的實現(xiàn)取決于物理存儲結(jié)構(gòu)。綜上所述,這門學(xué)科前兩個研究方向是數(shù)據(jù)基礎(chǔ),第三個研究方向是數(shù)據(jù)應(yīng)用。

數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)有邏輯上的數(shù)據(jù)結(jié)構(gòu)和物理存儲上的數(shù)據(jù)結(jié)構(gòu)之分。邏輯上的數(shù)據(jù)結(jié)構(gòu)反映成分數(shù)據(jù)之間的邏輯關(guān)系,而物理上的數(shù)據(jù)結(jié)構(gòu)反映成分數(shù)據(jù)在計算機內(nèi)部的存儲安排。數(shù)據(jù)結(jié)構(gòu)存在的意義是為了提高算法的效率,它通常有一組算法的集合相對應(yīng)。

邏輯結(jié)構(gòu)

按照組織結(jié)構(gòu),可以分為4類:

1、集合:每一個成分數(shù)據(jù)之間是沒有聯(lián)系的
2、線性結(jié)構(gòu):每一個成分數(shù)據(jù)前后兩個元素是有聯(lián)系的
3、樹形結(jié)構(gòu):成分數(shù)據(jù)的組織結(jié)構(gòu)可以看做是一個倒過來的樹
4、圖狀結(jié)構(gòu):其中成分數(shù)據(jù)可能于其他元素都有關(guān)聯(lián)

image.png

物理存儲結(jié)構(gòu)

數(shù)據(jù)在計算機內(nèi)存、寄存器、硬盤中的存儲形式,也可以分為4類:

1、順序:最為常見
2、鏈?zhǔn)剑鹤顬槌R?br> 3、索引
4、散列

數(shù)據(jù)的運算

數(shù)據(jù)的運算是在數(shù)據(jù)的邏輯結(jié)構(gòu)上定義的操作,它在數(shù)據(jù)的存儲結(jié)構(gòu)上實現(xiàn),算法的意義就是為了讓這些操作更加高效。常見的數(shù)據(jù)運算有5種操作:插入、修改、刪除、查找、排序。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容