直擊資訊的本質 陣列

2021-10-06 22:42:13 字數 1323 閱讀 1672

後語傳送門

陣列指多個連續的最小儲存單元所構成的集合,且每個單元只可被乙個陣列使用。陣列會記錄起始最小儲存單元的下標(start)與陣列長度(len)。(在計算機系統中,可以把記憶體看做乙個超大的陣列)

實際上陣列是由,最小儲存單元這個概念規定自然產生的一種資料結構,即多個連續的最小儲存單元稱之為陣列。實際上整個儲存區域也可以視為是乙個陣列。

如上圖,當對陣列q增加時,因為後面儲存單元已被w占用,無法在鏈結新的元素,只能在其他空閒位置重新開闢(如圖中e就是q重新開闢後的位置)。

效能:重新開闢儲存區域大小為n,所以開銷為o(n)。

例:(圖一)

(圖二)

如上圖一陣列q刪除了儲存區域(3,4,5,6,7)雖然不會出現占用的情況,但如果不進行重新分配,會出現q占用的儲存區域很大,實際利用的區域非常小,造成大量儲存資源浪費。

如上圖二陣列刪除後重新開闢了大小合適的陣列,在申請新陣列w時,可以充分利用空間。

效能:需要重新開闢儲存區域大小為n,所以開銷為o(n)。

例:如上圖訪問q中的第3個元素下標為3+3-1 =6(陣列的第1個元素為start,所以需要減1),因為陣列的特性它是由均勻且連續的元素構成,且會記錄第乙個開始的元素下標為start,那麼訪問這個陣列中的第n個元素,可快速計算得到這個元素的下標為start+n-1,所以消耗為o(1)。

改變乙個元素時需要先查詢,修改的成本為o(1)+o(查) ,所以修改乙個元素的開銷和查詢效能相當,所以消耗為o(1)。

1.陣列作為計算機中最基本的資料結構之一,可以看到陣列的優勢很明顯劣勢也很明顯,即查詢消耗非常小,增刪都需要重新申請陣列開銷非常大。

2.陣列在增刪的時候,需要重新申請陣列,其核心原因是因為儲存空間並不是無限的。在考慮到儲存利用率的情況下做出的妥協。

3.在實際中,陣列的申請和刪除並不是馬上重新申請新的儲存位址,是有一套處理邏輯,這裡簡化了這個過程,不做過多的說明。

4.陣列實際上已經是最基礎的資料結構了,資料結構從某種意義上來講,可以理解為資料之間的關係。而物理現實等原因,導致了需要定義最小儲存塊,那麼就自然誕生了陣列這種資料結構。

最小儲存單元

直擊資訊本質 資料結構總結篇

傳送門在資料結構系列文章中講到了三種基礎的資料結構陣列 鍊錶 字典。基本也是最常用的三種資料結構。資料結構可以理解為資料的某種組合方式,某種理解方式。事實上,一樣的資料,不一樣的理解方式,也會帶來完全不一樣的結果。在整個系列的文章中,重點是圍繞著資訊開展的與排序篇構成了姐妹篇。陣列的出現直接原因是因...

直擊資訊的本質 計數排序

前言 計數排序,顧名思義它是統計每個元素出現的次數。實際上是通過限定了資訊的範圍,在只適用於整數情況下達到了線性時間效能。整數集合在已知範圍的情況下,整數的個數是有限的,實際上限定資料為整數,是把問題從無限多種情況,變成了有限種情況 演算法原理 1.先計算資料中的最大值max最小值min。找出資料範...

直擊資訊的本質 桶排序

前言 桶排序在某種意義上來講它並不是乙個排序演算法,它更像乙個策略方案,事實上的排序還是由別的排序演算法完成,它的步驟分為兩部分 1 資料裝 桶 2 每個 桶 使用其餘的排序演算法進行排序。計數排序實際上是桶排序的特例情況,桶排序代表的是一般情況,資料結構字典的實現思想和桶排序的實現思想一致。演算法...