27 資料結構筆記之二十七陣列的定義和概念

2021-08-08 13:20:30 字數 1583 閱讀 5975

27、資料結構筆記之二十七陣列的定義和概念

「人生最終的價值在於覺醒和思考的能力,而不只在於生存。

-- 亞里斯多德」

學習了串以及串的幾個應用,包括文字編輯,詞索引等。這篇開始我們學習陣列。首先來介紹資料的一些定義和概念。

陣列可以看成是一種特殊的線性表,是線性表的推廣,其特點是資料元素仍然是乙個表,即線性表中資料元素本身也是乙個線性表

陣列是定長線性表在維數上的擴張,即線性表中的元素又是乙個線性表,n維陣列是一種「同構」的資料結構,其中每個資料元素型別相同,結構一致。、

設有n維陣列a[b1,b2,…,bn],其每一維的下界都為1,bi是第i維的上界。從資料結構的邏輯關係角度來看,a中的每個元素a[j1,j2, …,jn](1≤ji≤bi)都被n個關係所約束。在每個關係中,除第乙個和最後乙個元素外,其餘元素都只有乙個直接後繼和乙個直接前驅。因此就單個關係而言,仍是線性的。

以二維陣列a[m,n]為例,可以把它看成是乙個定長的線性表,它的每個元素也是乙個定長線性表。如下圖1

a可看成乙個行向量形式的線性表:

am,n=[[a11a12…a1n], [a21a22…a2n], …, [am1am2…amn]];

或列向量形式的線性表:

am,n=[[a11a21…am1], [a12a22…am2], …, [a1na2n…amn]];

陣列結構的特點如下:

(1) 資料元素數目固定,一旦定義了乙個陣列結構,就不再有元素的增減變化。

(2) 資料元素具有相同的型別。

(3) 資料元素的下標關係具有上下界得約束且下標有序。

陣列的兩個基本運算

(1) 給定一組下標,訪問相應的資料元素。

(2) 給定一組下標,修改相應的資料元素中某個資料項的值。

幾乎所有的高階程式語言都提供了陣列型別。實際上,在程式語言中把陣列看成是具有共同名字的同一型別多個變數的集合。

陣列一般不作插入和刪除運算,一旦定義了陣列,則結構中的資料元素個數和元素之間的關係就不再發生變動,因此陣列適合於採用順序儲存結構。

由於計算機的記憶體結構是一維線性的,因此儲存多維陣列時必須按某種方式進行降維處理,即將陣列元素排成乙個線性序列,這就產生了次序約定問題。因為多維陣列是由較低一維的陣列來定義的,依次類推,通過這種遞推關係將多維陣列的資料元素排成乙個線性序列。

對於陣列,一旦確定了其維度和各維的長度,便可為它分配儲存空間。反之,只要給出一組下標便可求得相應陣列元素的儲存位置,即在資料的順序儲存結構中,資料元素的位置是其下標的線性函式。

二維陣列的儲存結構可分為以行為主序的兩種方法(如下圖2)

推廣至多維陣列,按下標順序儲存時,先排最右的下標,從右向左直到最左下標,而逆下標順序則正好相反。

Android筆記(二十七)sqlite資料庫

1 建立資料庫 android 中提供sqliteopenhelper類幫助建立乙個資料庫,sqliteopenhelper 是乙個抽象類,要建立乙個自己的幫助類去繼承它,子類至少要實現三個方法 帶參的構造方法 oncreate 用來建立資料庫 onupgrade 用來公升級資料庫 資料庫檔案會存放...

C 回顧學習筆記二十七 using的兩個作用

using的第乙個被大眾所知道的功能是引用命名空間。這使得 的編寫更加簡單。比如using system 之後 系統預設了的 就可以不用再寫看著很複雜的system.console.writeline 了,有些類是屬於某個命名空間的,如果不引用那個命名空間就使用類,那麼 上就要在類的前方加上命名空間...

資料結構 樹狀陣列筆記

樹狀陣列 binary indexed tree,bit c i 存放的是在i號之前 包括i號 lowbit i 個整數的和 即 c i 的覆蓋長度是lowbit i 樹狀陣列的下標必須從1開始 int getsum int x void update int x,int v 經典應用 統計序列中在...