資料結構 陣列

2021-08-06 03:44:48 字數 1853 閱讀 6802

**陣列**

陣列是一種佔據連續記憶體並按順序儲存資料的簡單的資料結構。建立陣列時,需要首先指定陣列的容量,然後依據大小分配記憶體。由於有時候我們需要使用陣列的容量不確定,可能開闢的記憶體遠超實際使用的記憶體,所以陣列的空間效率不好。

由於陣列在記憶體中是連續的儲存空間,所以它的時間效率很高,可以在o(1)的時間讀寫資料。根據這一特性,可以用陣列實現簡單的雜湊表,這樣陣列下標就形成了鍵值-數值對。

c++的stl中動態陣列vector有效的解決了陣列的空間利用率問題,但可能影響了時間效率。

陣列與指標

陣列名是常量指標(位址常量),一般的指標則是變數(位址變數)。

1.執行下列**,請問輸出是什麼?

int getsize(int data)

int _tmain(int argc, _tchar* argv);

int size1 = sizeof(data1);

int* data2 = data1;

int size2 = sizeof(data2);

int size3 = getsize(data1);

printf(「%d

%d%d」,size1, size2, size3);

return

0; }

結果:20

44

data1是陣列,sizeof(data1)是求陣列的大小,data2是指標,在32位的系統上,所有的指標大小都是4個位元組,當陣列作為函式引數是,陣列自動退化成同型別的指標。

2.在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

例如下面的二維陣列就是每行、每列都遞增排序。如果在這個陣列中查詢數字7,則返回true;如果查詢數字5,由於陣列不含有該數字,則返回false。

1   2   8   9

2 4 9 12

4 7 10 13

6 8 11 15

思路

128

1224

9242

44710

4747

4768

11686

868 (a) (b) (c) (d)

首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束;如果該數字大於要查詢的數字,剔除這個數字所在的列;如果該數字小於要查詢的數字,剔除這個數字所在的列;如果該數字小於要查詢的數字,剔除這個這個數字所在的行。也就是說如果要查詢的數字不在陣列的右上角,則每一次都在陣列的查詢範圍中剔除一行或者一列,這樣每一步都可以縮小查詢的範圍,直到找到要查詢的數字,或者查詢範圍為空。
bool find(int *matrix, int rows, int columns, int number)else

if(matrix[row * columns + column] > number)else

++row;

}

}return found;

}

測試用例:

(1)二維陣列中包含查詢的數字(查詢的數字是陣列中的最大值和最小值,查詢的數字介於陣列中的最大值和最小值之間)

(2)二維陣列中沒有查詢的數字(查詢的數字大於陣列中的最大值,查詢的數字大於陣列中的最小值,查詢的數字在陣列的最大值和最小值之間但陣列中沒有這個數字)。

(3)特殊輸入測試(輸入空指標)。

資料結構 陣列

建立陣列 大小為50 棧空間存myarray引用 堆空間存乙個大小為50,預設值為0的陣列。棧空間myarray引用指向堆空間該陣列。int myarray new int 50 public class testarray public class testarray if s intarray....

資料結構 陣列

陣列 就是相同型別的資料按一定順序排列的集合,把有限個型別相同的資料元素用乙個名字表示,通過編號來區分。名字即為陣列名,編號即為下標。陣列是最簡單 使用最廣泛的一種資料結構,其實就是一塊連續的記憶體,哪怕物理上不連續,邏輯上也是連續的,連續存放著一組相同型別資料元素。陣列的定義 type 變數名 n...

資料結構 陣列

陣列的基本特點 1.陣列是乙個容器,可以儲存 個同一型別的資料 2.陣列是一種資料結構,是資料結構中訪問速度最快的 3.陣列屬於引用資料型別,即陣列名中儲存的是記憶體的首位址 4.陣列本身只有長度屬性 陣列中能儲存的資料個數 但是有從物件父類繼承的屬性和方法 5.陣列可以分為一維陣列,二維陣列,陣列...