資料結構之 陣列

2021-10-08 09:50:04 字數 818 閱讀 2892

陣列最重要的三點:

原因:

建立乙個陣列,就是在記憶體中開闢了一整塊兒連續記憶體用來存放陣列的資料。記憶體位址連續。像c語言中,陣列名應該就是直接指向陣列的頭元素記憶體位址。

只要我們知道陣列頭元素的記憶體位址,根據索引訪問元素時,只需要加上/減去對應的記憶體位址變化量即可。根據作業系統不同,每次增加值不同。

我們只需要知道陣列第乙個元素的記憶體位址就能很容易地得到陣列中任意乙個元素的記憶體位址,也就能獲得這個元素的值。這就是為什麼說陣列查詢元素的時間複雜度是o(1)。

如下python**證明:

nums = [1,2,3,4,5]

print(id(nums[0]))  # 38825144

print(id(nums[1]))  # 38825120

print(id(nums[2]))  # 38825096

print(id(nums[4]))  # 38825048

# 可以看到這裡,每次記憶體位址變化是24。記憶體位址連續

當我們插入或者刪除乙個元素時,如果在尾部插入,那就意味著我們要把現在所有的元素都向前移動乙個記憶體位址,這樣才能把原本尾部元素的記憶體位址騰出來存放新的值。要做n次移動操作,時間複雜度是o(n)

如果在頭部插入,就不需要移動元素,直接在尾部新增乙個元素即可。當我們隨機插入時,平均每次插入大概要移動2/n次,也就是說時間複雜度是2/n,忽略常數,複雜度就是o(n)。

刪除同理。

在插入或者刪除時,如果原有的連續記憶體位址空間不夠,會重新開闢一塊兒完整的記憶體空間,把這個陣列全部複製過去。

資料結構之陣列

陣列的考點 1.二維陣列元素位址計算 三維陣列中元素個數的計算 選擇題 2.廣義表的基本概念 會求表尾 表頭,填空題 3.矩陣的壓縮儲存 壓縮儲存的目的 對稱矩陣壓縮儲存後的大小,填空題 針對考點,一一擊破。哈哈哈。第一部分 首先,二維陣列元素位址計算。注 只要知道以下三要素便可隨時求出任一元素的位...

資料結構之 陣列

陣列是線性表,就是資料排成像一條直線一樣的結構,除了陣列,鍊錶,佇列,棧都是線性結構 而非線性表就是二叉樹,堆,圖等,資料之間不是簡單的先後關係。陣列有連續的記憶體空間和相同型別的資料。正式有了這兩個限制,才有了乙個堪稱殺手鐗的特性 隨機訪問 但是刪除,插入乙個資料,為了保證連續性,就需要做大量的資...

資料結構之 陣列

陣列是由相同型別的元素的集合所組成的資料結構並且是分配一塊連續的記憶體來儲存。利用元素的索引 index 可以計算出該元素對應的儲存位址。一維陣列就是最簡單的陣列,就像 int data 二維陣列實質就是儲存的一維陣列,就像 int data 大於等於二維的陣列就叫多維陣列。需要初始化空間大小,並且...