Hello 算法 1.2.0 繁体中文 C语言 版= 1, 2, ..., n-1, n for (int j = 1; j <= n; j++) { char tmp[26]; snprintf(tmp, sizeof(tmp), "(%d, %d), ", i, j); strncat(res, tmp, size - strlen(res) - 1); } } return res; } 圖 2‑2 是該巢狀迴圈的流程框圖。 a = a + 1; // 1 ns a = a * 2; // 10 ns // 迴圈 n 次 for (int i = 0; i < n; i++) { // 1 ns printf("%d", 0); // 5 ns } } 根據以上方法,可以得到演算法的執行時間為 (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但實際上, A 的時間複雜度:常數階 void algorithm_A(int n) { printf("%d", 0); } // 演算法 B 的時間複雜度:線性階 void algorithm_B(int n) { for (int i = 0; i < n; i++) { printf("%d", 0); } } // 演算法 C 的時間複雜度:常數階 void algorithm_C(int0 码力 | 392 页 | 18.83 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Go 版:= 1; i <= n; i++ { for j := 1; j <= n; j++ { // 迴圈 j = 1, 2, ..., n-1, n res += fmt.Sprintf("(%d, %d), ", i, j) } } return res } 圖 2‑2 是該巢狀迴圈的流程框圖。 第 2 章 複雜度分析 www.hello‑algo.com 22 圖 2‑2 巢狀迴圈的流程框圖 spaceQuadraticRecur(n int) int { if n <= 0 { return 0 } nums := make([]int, n) fmt.Printf(" 遞迴 n = %d 中的 nums 長度 = %d \n", n, len(nums)) return spaceQuadraticRecur(n - 1) } 圖 2‑18 遞迴函式產生的平方階空間複雜度 4. 指數階 ?(2 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long0 码力 | 385 页 | 18.80 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Kotlin 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 小哈] 的雜湊值為 189568618 val obj = ListNode(0) val hashObj = obj.hashCode() // 節點物件 utils.ListNode@1d81eb93 的雜湊值為 495053715 在許多程式語言中,只有不可變物件才可作為雜湊表的 key 。假如我們將串列(動態陣列)作為 key ,當串 列的內容發生變化時,它的雜湊值也隨之改變,我們就無法在雜湊表中查詢到原先的0 码力 | 382 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 C# 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 224 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Dart 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 224 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 378 页 | 18.77 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Java 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 224 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 JavaScript 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 224 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 379 页 | 18.78 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 TypeScript 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 第 6 章 雜湊表 www.hello‑algo.com 119 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 226 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 384 页 | 18.80 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Swift 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 容易想到,雜湊表容量 ? 越大,多個 key 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 225 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Ruby 版而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 被分配到同一個桶中的機率就越低,衝突就越少。因此,我們可以 透過擴容雜湊表來減少雜湊衝突。 第 6 章 雜湊表 www.hello‑algo.com 117 如圖 6‑4 所示,擴容前鍵值對 (136, A) 和 (236, D) 發生衝突,擴容後衝突消失。 圖 6‑4 雜湊表擴容 類似於陣列擴容,雜湊表擴容需將所有鍵值對從原雜湊表遷移至新雜湊表,非常耗時;並且由於雜湊表容量 capacity 改變,我們需要透過雜湊函 19) ('B', 18) ('C', 21) ('D', 19) ('E', 23) # 假設使用非穩定排序演算法按年齡排序串列, # 結果中 ('D', 19) 和 ('A', 19) 的相對位置改變, 第 11 章 排序 www.hello‑algo.com 220 # 輸入資料按姓名排序的性質丟失 ('B', 18) ('D', 19) ('A', 19) ('C', 21)0 码力 | 372 页 | 18.75 MB | 10 月前3
共 37 条
- 1
 - 2
 - 3
 - 4
 













