官术网_书友最值得收藏!

1.6 插入

向數組中插入數據的效率取決于你想要插入的位置。

如果想在購物清單末尾加上"figs",那么只需要1步。

這是由于計算機的另一個特性:在將內存分配給數組時,計算機總是會記錄數組的大小。

因為計算機知道數組的起始內存地址,所以計算數組最后一個元素的內存地址就很簡單了:如果數組開始于內存地址1010,大小是5,那么它的最后一個內存地址就是1014。要在那之后再添加一個元素,只需放到下一個內存地址1015即可。

一旦計算機算出了存儲新值的內存地址,它只需要1步就能完成插入。

下圖展示了在數組末尾插入"figs"的過程。

不過還有一個問題。因為計算機本來在內存中給數組分配了5個格子,而現在我們又加了一個元素,所以就得再給數組多分配一個格子。在很多編程語言中,這是自動完成的。但每種編程語言的處理方式不同,這里就不詳細介紹了。

以上就是在數組末尾插入元素的過程,但在數組開頭或者中間插入新數據就是另一回事了。在這兩種情況下,必須移動數據,來給要插入的數據騰出空間。這就需要額外步驟。

假設我們要在索引2處插入"figs"。先來看下圖。

為此,需要向右移動"cucumbers"、"dates""elderberries"來給"figs"騰出空間。這個過程需要多步,因為需要先把"elderberries"向右移動一個格子,才能移動"dates"。然后,再移動"dates"來給"cucumbers"讓位。下面來詳細看一下這個過程。

第1步:右移"elderberries",如下圖所示。

第2步:右移"dates",如下圖所示。

第3步:右移"cucumbers",如下圖所示。

第4步:最后,在索引2處插入"figs",如下圖所示。

注意,在這個例子中,插入需要4步,其中3步是數據右移,剩下1步是插入新值。

向數組開頭插入元素需要步數最多,也就是所謂的最壞情況。這是因為要在數組開頭插入元素,必須把其他所有值都右移一個格子。

對包含N個元素的數組來說,最壞的情況下需要N + 1步插入。這是因為需要移動N個元素,然后才能執行插入操作。

講完插入,終于可以講最后一個操作了,那就是刪除。

主站蜘蛛池模板: 南城县| 涡阳县| 甘洛县| 桂平市| 肥东县| 方山县| 镇巴县| 芒康县| 汝南县| 洛扎县| 和硕县| 吉木萨尔县| 东源县| 广昌县| 安达市| 黄石市| 古交市| 崇义县| 科尔| 罗源县| 南皮县| 上虞市| 东宁县| 长顺县| 镇安县| 乌苏市| 肥乡县| 仙游县| 清水河县| 台州市| 湘乡市| 思茅市| 凌云县| 江川县| 万盛区| 普宁市| 多伦县| 靖宇县| 水富县| 新晃| 湟源县|