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

2021-10-08 23:28:59 字數 1649 閱讀 3881

專欄目錄(資料結構與演算法解析):

定義:有序的元素序列,

陣列是用來儲存具有「一對一」邏輯關係的資料的線性儲存結構,由於在各種程式語言中常把陣列作為基本資料型別來使用,很多人會誤解陣列不是儲存結構。

通常我們根據不同的結構特性將陣列分為三類:一維陣列,二維陣列和多維陣列(儲存(n-1)維陣列的陣列,不做過多討論)

本節中我們主要針對一維陣列進行詳細講解,分析陣列的應用場景,使用方法及其優缺點。

一維陣列是指儲存單個元素的陣列,

以整形陣列為例,通常c語言中我們會將其定義為:int array[n],其中n表示陣列中可存放資料的個數,

特點
儲存空間是連續的,儲存的資料都是相同型別的,資料的位置具有先後順序
接下來我們通過c語言**對陣列的操作進行演示:

//#include

#include

//陣列的宣告和初始化

int array[10]

=;int*

insert

(int data,

int index)

else

if(i=index)

else

}return temp;

}int

*delete_from_position

(int index)

else

}return temp;

}int

*update

(int index,

int data)

intselect_from_index

(int index)

intselect_from_data

(int data)

}return index;

}int

main()

二維陣列指的是儲存一維陣列的陣列,

以整形陣列為例,通常c語言中我們會將其定義為:int array[m][n],其中m表示二維陣列的行,n表示二維陣列的列,二維陣列通常也叫做矩陣。

特點

儲存空間是連續的,儲存的資料都是相同型別的,資料的位置具有先後順序

二維陣列的初始化與一維陣列略有不同,

1.分行給二維陣列賦初值。

int array[5][5]=,,,,};

2.可以將所有資料寫在乙個花括號內,按陣列元素在記憶體中的排列順序對各元素賦初值。

int array[5][5]=;

3.可以對部分元素賦初值,其餘元素值自動為0.

4.如果對全部元素都賦初值,則定義陣列時對第一維的長度可以不指定,但第二維的長度必須指定。

本節中我們主要學習了一維陣列,通過上述學習我們不難發現對陣列進行的各項操作中讀取指定位置的元素值最方便,相反的在陣列中插入和刪除元素是比較複雜的。其實陣列是不擅長進行插入和刪除元素操作的,陣列是連續的,所以查詢資料速度很快。但也正因為它是連續的,所以當插入乙個元素時,插入點後所有的元素全部都要向後移,而刪除乙個元素時,刪除點後所有的元素全部都要向前移,這個過程會耗費大量的資源。陣列的常會用在有大量查詢和修改操作並且很少增刪操作的場景下,例如記錄某棟句居民樓中各戶人口數時我們可以使用陣列,此時陣列長度不會發生改變,只需要對陣列進行查詢和修改操作。

以上是我的一些粗淺的見解,有表述不當的地方歡迎指正,謝謝!

一文讀懂資料結構之順序查詢

小結下目前的查詢演算法和排序演算法。查詢演算法 1 順序查詢 遍歷元素,逐個和要查詢的key比較 2 二分查詢 先排序,然後通過中間數來縮小查詢範圍。排序演算法 1 氣泡排序 相鄰元素挨個比,大的放到後邊,有點順序查詢的感覺。遍歷 2 選擇排序 從無序區中直接選擇乙個最小的元素 這個過程就是有點像冒...

陣列與鍊錶 一文讀懂

資料結構是軟體開發中最基礎的部分了,它體現著我們程式設計的內功。大多數人在正兒八經學習資料結構的時候估計是在大學計算機課上,而在實際專案開發中,反而感覺到用得不多。其實也不是真的用得少,只不過我們在使用的時候被很多高階語言和框架元件封裝好了,真正需要自己去實現的地方比較少而已。但別人封裝好了不代表我...

mysql結構 一文讀懂MySQL體系結構

一 定義資料庫和例項 資料庫 物理作業系統檔案或其他形式檔案型別的集合。資料庫檔案可以是frm myd ibd 結尾的檔案。從概念上來說,資料庫是檔案的集合,是依照某種資料模型組織起來並存放於二級儲存器的資料集合 例項 mysql資料庫由後台程序以及乙個共享記憶體區組成。共享記憶體可以被執行的後台執...