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

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

生活随笔

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

编程问答

数据结构一—— 数组

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

文章出處:極客時(shí)間《數(shù)據(jù)結(jié)構(gòu)和算法之美》-作者:王爭(zhēng)。該系列文章是本人的學(xué)習(xí)筆記。

如何實(shí)現(xiàn)隨機(jī)訪問(wèn)

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

線(xiàn)性表

線(xiàn)性表的數(shù)據(jù)最多只有前和后兩個(gè)方向。數(shù)組、棧、隊(duì)列、鏈表都是線(xiàn)性表。
非線(xiàn)性表:樹(shù)、圖、堆。

連續(xù)的內(nèi)存空間

a[i]_address=base_address+i?data_type_sizea[i]\_address=base\_address+i*data\_type\_sizea[i]_address=base_address+i?data_type_size,data_type_size表示數(shù)組中每個(gè)元素的大小。
如果數(shù)組下標(biāo)從1開(kāi)始,那么在查找a[i]_address=base_address+(i?1)?data_type_sizea[i]\_address=base\_address+(i-1)*data\_type\_sizea[i]_address=base_address+(i?1)?data_type_size會(huì)多一次減法操作。這可能是大多數(shù)語(yǔ)言數(shù)組下標(biāo)從0開(kāi)始的原因。

與鏈表的區(qū)別

數(shù)組支持隨機(jī)訪問(wèn),復(fù)雜度O(1)。鏈表適合插入刪除。

低效地插入和刪除

插入:如果某個(gè)位置a[i]已經(jīng)被占用了,就需要將i到最后一個(gè)元素拷貝到i+1到count位置,然后a[i]=val。平均時(shí)間復(fù)雜度O(n)。
改進(jìn)策略:大多數(shù)時(shí)候我們不需要追求順序性,那么我們可以把a(bǔ)[i]復(fù)制到數(shù)組末尾,將 當(dāng)前元素賦值給a[i]。例如數(shù)組a[10],已經(jīng)存入元素:1,2,3,4,5。現(xiàn)在想插入a[2]=10,那么插入完成后數(shù)組變?yōu)?#xff1a;1,2,10,4,5,3。

刪除:因?yàn)閮?nèi)存塊是連續(xù)的,當(dāng)刪除i位的元素后,從i+1到count的元素需要向前遷移。這樣平均復(fù)雜度也是O(n)。
刪除的改進(jìn)策略可以是:刪除的位置先做標(biāo)記不做遷移,等空間不夠的時(shí)候再做遷移。這就是Java虛擬的標(biāo)記清除算法。

警惕數(shù)組越界

數(shù)組越界是通常需要處理的問(wèn)題。在C中數(shù)組越界可能會(huì)產(chǎn)生意想不到的結(jié)果。

容器能否完全替代數(shù)組

在某些場(chǎng)合還是用數(shù)組不會(huì)用容器。例如:
1 數(shù)組可以存儲(chǔ)基本數(shù)據(jù)類(lèi)型,速度上更快。在已知數(shù)組大小,并且操作簡(jiǎn)單的情況下數(shù)組是個(gè)更好的選擇。
2 多維數(shù)組一般用數(shù)組表示。a[][] 這樣的表示比List<List> 這樣的結(jié)構(gòu)更容易接受。

總結(jié)

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

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