資料結構基礎知識 時間複雜度 空間複雜度 陣列

2021-09-26 07:49:51 字數 1803 閱讀 6264

劍指offer 2.3.1 陣列

陣列時間高效指演算法設計合理,執行效率高,可以用時間複雜度來度量。

演算法的時間複雜度由巢狀最深層語句的頻度決定的。

eg.

for (int i = 2; i<=n; ++i)

for(int j = 2;j<=i-1; ++j)

時間複雜度為$o(n^2)$

時間複雜度為o(n

2)

o(n^2)

o(n2

)空間複雜度:演算法開始執行直至結束過程中所需要的最大儲存資源開銷的一種度量。

eg.:

一維陣列的空間複雜度是o(n

)o(n)

o(n)

n*n矩陣的空間複雜度為o(n

2)

o(n^2)

o(n2

)陣列:陣列是由型別相同的資料元素構成的有序的集合,每個元素稱為陣列元素。

陣列佔據一塊連續的記憶體並按照順序儲存資料;

我們需要首先定義陣列的容量大小,然後根據大小分配記憶體,即使我們只在陣列中儲存乙個數字,也需要為所有的資料分配記憶體,因此,空間效率不是很好;

由於陣列中的記憶體是連續的,根據下標在o(1

)o(1)

o(1)

時間讀/寫任何元素,因此他的時間效率是很高的;

在 c/c++中,陣列和指標是既相互關聯又有區別的兩個概念。當我們嚴明乙個陣列時,其陣列的名字也是乙個指標,該指標指向陣列的第乙個元素。

陣列和指標eg

int getsize(int data)

int_tmain(int argc, _tchar* ar**)

; int size1 = sizeof(data1);

int* data2 = data1;

int size2 = sizeof(data2);

int size3 = getsize(data1);

printf(」%d, %d, %d」, size i, size2, size3);

}

答案輸出是「20,4,4。」

20: 五個整數,每個整數佔四個位元組;

4:指標指向陣列第乙個元素,但其本質還是指標。(在32位系統上,對任意指標求sizeof,得到的結果都是4);

4:當陣列進行值傳遞時,陣列就自動退化成相同型別的指標。

特點:元素本身也可是乙個資料結構。

特殊線性表

·棧,佇列(限制插入和刪除位置)

·串(限制元素型別為字元)

一維陣列

c/c++定義:

int a[100]

二維陣列

c/c++中的二維陣列:乙個二維陣列型別可以定義為其分量型別為一維陣列型別的一維陣列型別。

typedef int array2[m][n];

等價於

typedef int array1[n];

typedef array1 array2[m];

note:陣列一旦被定義,它的維數和維界就不再改變。

二維陣列建立順序:以行序為主序/

資料結構 時間複雜度 空間複雜度

1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...

資料結構 時間 空間複雜度

1 演算法是指令的有窮序列。5個特徵 有窮性,確定性,可行性,輸入,輸出。4個要求 正確性,可讀性,健壯性,效率與低儲存量。2 漸進時間複雜度 t n o f n 漸進時間複雜度衡量的是乙個演算法基本操作執行次數的數量級,而不是單純地比較程式執行時間的長短。其真實意義應該是 是如果問題規模 n 趨向...

資料結構 時間,空間複雜度

幾個概念 演算法的複雜度 演算法的時間複雜度和演算法的空間複雜度 時間複雜度 實際上就是乙個函式,該函式計算的是執行基本操的次數 演算法存在最好,平均,最壞情況 空間複雜度 函式中建立個數關於問題規模函式表示式。時間複雜度與空間複雜度一般用o的漸進表示法表示。1 void test int n 總執...