浅谈数据结构和数据类型
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 https://blog.csdn.net/u012540337/article/details/80499226
最近總是被這兩個(gè)概念混淆,抽出時(shí)間捋了捋他們的概念、關(guān)系。希望對(duì)大家有用。
為什么要引入數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型的概念?
計(jì)算機(jī)只識(shí)別0和1。現(xiàn)在人給計(jì)算機(jī)發(fā)送圖片,語音,視頻,二級(jí)制文件。該怎么辦呢?其實(shí)簡(jiǎn)單一點(diǎn)的就是圖片(0101010101)、語音(01010101010101010101010),視頻(010101010101010110101001.......)二級(jí)制文件(010101010101...........)。取中間值假設(shè)定義一種簡(jiǎn)單的數(shù)據(jù)(初始大小100000k),那發(fā)送1k的圖片需要初始化100000k,是不太浪費(fèi)內(nèi)存空間了。所以需要定義不同的數(shù)據(jù),也就是不同的數(shù)據(jù)類型。
現(xiàn)在需要統(tǒng)計(jì)班級(jí)的成績(jī),比如小紅-第一名,小明-第二名,小周-第三名...大家一下子想到了使用key-value這樣的集合去存儲(chǔ)這樣的數(shù)據(jù)。怎么保證小紅,就能拿到第一名呢?怎么保證數(shù)據(jù)過多,快速查找數(shù)據(jù)呢?刪除、增加數(shù)據(jù),集合怎么變動(dòng)呢?這就需要數(shù)據(jù)結(jié)構(gòu)去解決這些問題了。
一、概念
數(shù)據(jù)結(jié)構(gòu):計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或者存儲(chǔ)效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。
數(shù)據(jù)類型:在數(shù)據(jù)結(jié)構(gòu)中的定義是一個(gè)值的集合以及定義在這個(gè)值集上的一組操作。
二、分類
數(shù)據(jù)結(jié)構(gòu):數(shù)組、棧、隊(duì)列、鏈表、樹、圖、堆、散列表等。
數(shù)據(jù)類型:基本數(shù)據(jù)類型(byte、short、int、long、double、float、boolean、char),引用數(shù)據(jù)類型,(以JAVA舉例)
三、淺談不同
(1)數(shù)據(jù)類型定義了數(shù)據(jù)在計(jì)算機(jī)存儲(chǔ)的大小及數(shù)據(jù)的操作。比如int類型的數(shù)據(jù),在計(jì)算機(jī)存儲(chǔ)是兩個(gè)字節(jié)的長(zhǎng)度。
int類型有一些加、減、乘、除的操作。
數(shù)據(jù)結(jié)構(gòu)定義了數(shù)據(jù)存儲(chǔ)及組織數(shù)據(jù)的方式。比如mysql數(shù)據(jù)庫(kù)索引,使用的是B+樹結(jié)構(gòu),提高了數(shù)據(jù)的檢索效率,減少了io的操作。
(2)數(shù)據(jù)類型是一類事物的集合,數(shù)據(jù)結(jié)構(gòu)是一種解決問題的思想。
(3)數(shù)據(jù)類型中也會(huì)用到數(shù)據(jù)結(jié)構(gòu),如HashMap的低層結(jié)構(gòu)是數(shù)組+鏈表+紅黑樹
總結(jié)
以上是生活随笔為你收集整理的浅谈数据结构和数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (推荐)为什么要走嵌入式?
- 下一篇: 计算机中减法的实现原理