日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据结构-数组

發(fā)布時(shí)間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构-数组 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)組概念:

數(shù)組是一種線(xiàn)性表數(shù)據(jù)結(jié)構(gòu),它用一組連續(xù)的內(nèi)存空間,來(lái)存儲(chǔ)一組具有相同類(lèi)型結(jié)構(gòu)的數(shù)據(jù)。

關(guān)鍵詞:

線(xiàn)性:顧名思義,線(xiàn)性表就是數(shù)據(jù)排成像一條線(xiàn)一樣的數(shù)據(jù)結(jié)構(gòu)。每個(gè)線(xiàn)性表上的數(shù)據(jù)最多只有前后兩個(gè)方向。其實(shí)除了數(shù)組,鏈表,隊(duì)列,棧等也是線(xiàn)性表結(jié)構(gòu)

而與它相對(duì)立的概念就是非線(xiàn)性表,比如說(shuō)二叉樹(shù),堆,圖。之所以叫非線(xiàn)性,是因?yàn)?#xff0c;在非線(xiàn)性表中,數(shù)據(jù)之間并不是簡(jiǎn)單的前后關(guān)系。

第二個(gè)是連續(xù)的內(nèi)存空間和相同類(lèi)型的數(shù)據(jù)。正是因?yàn)檫@兩個(gè)限制,它才有了一個(gè)堪稱(chēng)“殺手锏”的特性:“隨機(jī)訪問(wèn)”。但有利就有弊,隨機(jī)訪問(wèn)對(duì)應(yīng)的就是查詢(xún)很快,但是當(dāng)插入和刪除的時(shí)候,為了保證連續(xù)性,需要對(duì)數(shù)據(jù)進(jìn)行大量的遷移工作。

接下來(lái)我們來(lái)看下插入操作

數(shù)組長(zhǎng)度為n,現(xiàn)在我們要將一個(gè)數(shù)據(jù)插入到數(shù)組中的第k個(gè)位置。為了把第k個(gè)位置空出來(lái),就需要把k后面所有的數(shù)據(jù)依次往后面移動(dòng)一位,如果我們是在數(shù)組開(kāi)頭插入數(shù)據(jù),那么就需要把所有的數(shù)據(jù)都順序往后面移動(dòng),這個(gè)時(shí)候時(shí)間復(fù)雜度就是O(n),如果是在數(shù)組末尾插入一個(gè)數(shù)據(jù),那么就不需要移動(dòng)數(shù)據(jù),時(shí)間復(fù)雜度就是O(1),所以最壞情況下的時(shí)間復(fù)雜度是O(n),

最好情況下的時(shí)間復(fù)雜度是O(1),但是其實(shí)在真正的工作當(dāng)中,出現(xiàn)這兩種情況的幾率很小,大多數(shù)都是在數(shù)組開(kāi)頭到結(jié)尾的位置插入數(shù)據(jù),那么平均算下來(lái)時(shí)間復(fù)雜度就是O(n)。

我們?cè)賮?lái)看刪除操作

跟插入數(shù)據(jù)類(lèi)似,如果我們要?jiǎng)h除第k個(gè)位置的數(shù)據(jù),為了內(nèi)存的連續(xù)性,也需要搬移數(shù)據(jù),不然中間就會(huì)出現(xiàn)空洞,內(nèi)存就不連續(xù)了。

和插入類(lèi)似,如果刪除數(shù)組末尾的數(shù)據(jù),則最好情況時(shí)間復(fù)雜度為O(1),如果刪除開(kāi)頭的數(shù)據(jù),則最壞情況時(shí)間復(fù)雜度為O(n);平均情況時(shí)間復(fù)雜度也為O(n)。

實(shí)際上在某些特殊情況下,我們并不一定非得追求數(shù)組中數(shù)據(jù)的連續(xù)性。如果我們將多次刪除操作集中在一起執(zhí)行,刪除的效率是不是會(huì)提高很多呢?

數(shù)組a[10]中存儲(chǔ)了8個(gè)元素:a,b,c,d,e,f,g,h。現(xiàn)在我們要依次刪除a,b,c三個(gè)元素

為了避免搬移三次數(shù)據(jù),我們可以給這三個(gè)數(shù)據(jù)打上已刪除的標(biāo)示,當(dāng)數(shù)組沒(méi)有更多空間存儲(chǔ)數(shù)據(jù)時(shí),我們?cè)谟|發(fā)一次真正的刪除操作,這樣就大大減少了刪除操作導(dǎo)致的數(shù)據(jù)搬移。

內(nèi)容小結(jié)

我們今天學(xué)習(xí)了數(shù)組。它可以說(shuō)是最基礎(chǔ),最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)了。數(shù)組用一塊連續(xù)的內(nèi)存空間,來(lái)存儲(chǔ)相同類(lèi)型的一組數(shù)據(jù),最大的特點(diǎn)就是支持隨機(jī)訪問(wèn),但插入,刪除操作也因此變得比較低效,平均情況時(shí)間復(fù)雜度為O(n)。在平時(shí)的業(yè)務(wù)開(kāi)發(fā)中,我們可以直接使用編程語(yǔ)言中提供的容器類(lèi),但是,如果是特別底層的開(kāi)發(fā),直接使用數(shù)組可能會(huì)更合適。

了解更多:https://www.toutiao.com/c/user/83293539887/#mid=1633933053814798

轉(zhuǎn)載于:https://www.cnblogs.com/sjks/p/10889483.html

總結(jié)

以上是生活随笔為你收集整理的数据结构-数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。