陣列 最簡單的資料結構型別

2021-10-21 18:15:56 字數 1269 閱讀 5615

電腦會分配一段空間,比如從0000 0000 ~ 1111 1111,這一段都是屬於某個陣列的

3. 相同型別的元素

比如int a[10]裡面儲存的都是int型別的資料,每個相同型別的資料所佔的空間是一樣的,比如int型別固定佔4個位元組。正是因為這種特性,陣列才可以通過下標直接訪問其中的某個元素,比如我們要訪問第i

ii個元素,那麼實際上在電腦中會出現這樣的情況:

這樣我們就能通過下標i

ii直接訪問到我們想要的元素了

陣列作為一種資料型別肯定得應付增刪改查這四個基礎功能了,我們來分別看看它們的時間複雜度。

先通過兩個例子來理解:

在不需要擴容的情況下,

插入/刪除最後一位:b(n

)∈o(

1)b(n) \in o(1)

b(n)∈o

(1),這還好

插入/刪除第一位:w(n

)∈o(

n)w(n) \in o(n)

w(n)∈o

(n),因為需要將所有元素都往後/前挪乙個單位

假設在陣列中任意位置插入元素的概率相同,那麼n個元素的陣列有n+1個位置可以插入,可列式a(n

)=nn

+1+n

−1n+

1+..

.+1n

+1+0

n+1∈

o(n)

a(n)=\frac+\frac+...+\frac+\frac \in o(n)

a(n)=n

+1n​

+n+1

n−1​

+...

+n+1

1​+n

+10​

∈o(n

)陣列的插入和刪除其實沒有那麼容易,因為根據陣列的定義,我們無法在一片連續的空間中插入新的空間或將原有空間刪除,於是只能退而求其次,將所有元素辛苦移位。

改和查要分情況討論:

如果是通過值來找下標,那排好序的情況下用二分查詢時間複雜度是o(l

ogn)

o(logn)

o(logn

),亂序情況下的平均時間複雜度是o(n

)o(n)

o(n)

如果是通過下標直接訪問,那時間複雜度就是o(1

)o(1)

o(1)

我們要嚴謹一些hhhhh

一文讀懂最簡單的資料結構 陣列

專欄目錄 資料結構與演算法解析 定義 有序的元素序列,陣列是用來儲存具有 一對一 邏輯關係的資料的線性儲存結構,由於在各種程式語言中常把陣列作為基本資料型別來使用,很多人會誤解陣列不是儲存結構。通常我們根據不同的結構特性將陣列分為三類 一維陣列,二維陣列和多維陣列 儲存 n 1 維陣列的陣列,不做過...

簡單的資料結構

題目描述 慄醬有一天在網上衝浪的時候發現了一道很有意思的資料結構題。該資料結構形如長條形。一開始該容器為空,有以下七種操作。1 a從前面插入元素a 2 從前面刪除乙個元素 3 a從後面插入乙個元素 4 從後面刪除乙個元素 5 將整個容器頭尾翻轉 6 輸出個數和所有元素 7 對所有元素進行從小到大排序...

資料結構和演算法 最簡單的加密演算法

異或 資料結構和演算法 crc8 crc16 crc32常見幾個標準的演算法及c語言實現 異或是最簡單的加密運算,把a和b異或後得到c,其中c就是加密之後的資料,我們可以將c與a或b再進行異或即可得到b或a。利用異或的這個特性可簡單實現資料的加密和解密演算法。include include defi...