Hello 算法 1.2.0 繁体中文 JavaScript 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 a = a + 1; // 1 ns a = a * 2; // 10 ns // 迴圈 n 次 for(let i = 0; i < n; i++) { // 1 ns console.log(0); // 5 ns } } 根據以上方法,可以得到演算法的執行時間為 (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但實際上,統 A 的時間複雜度:常數階 function algorithm_A(n) { console.log(0); } // 演算法 B 的時間複雜度:線性階 function algorithm_B(n) { for (let i = 0; i < n; i++) { console.log(0); } } // 演算法 C 的時間複雜度:常數階 function algorithm_C(n)0 码力 | 379 页 | 18.78 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 TypeScript 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 a = a + 1; // 1 ns a = a * 2; // 10 ns // 迴圈 n 次 for(let i = 0; i < n; i++) { // 1 ns console.log(0); // 5 ns } } 根據以上方法,可以得到演算法的執行時間為 (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但實際上,統 function algorithm_A(n: number): void { console.log(0); } // 演算法 B 的時間複雜度:線性階 function algorithm_B(n: number): void { for (let i = 0; i < n; i++) { console.log(0); } } // 演算法 C 的時間複雜度:常數階 function algorithm_C(n:0 码力 | 384 页 | 18.80 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Ruby 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : # === File: time_complexity0 码力 | 372 页 | 18.75 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Python 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 圖 2‑9 常見的時間複雜度型別 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : # === File: time_complexity0 码力 | 364 页 | 18.74 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 C# 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : // === File: time_complexity0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Dart 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : // === File: time_complexity0 码力 | 378 页 | 18.77 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Go 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : // === File: time_complexity0 码力 | 385 页 | 18.80 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Kotlin 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : // === File: time_complexity0 码力 | 382 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Java 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : // === File: time_complexity0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Swift 版如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。 ‧ 但如果學過演算法,我們就會知道內建排序函式的時間複雜度是 ?(? log ?) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 + 10000?10000 ?(2?) 2.3.4 常見型別 設輸入資料大小為 ? ,常見的時間複雜度型別如圖 2‑9 所示(按照從低到高的順序排列)。 ?(1) < ?(log ?) < ?(?) < ?(? log ?) < ?(?2) < ?(2?) < ?(?!) 常數階 < 對數階 < 線性階 < 線性對數階 < 平方階 < 指數階 < 階乘階 第 2 章 複雜度分析 www.hello‑algo 可接受的,通常需要使用動態規劃或貪婪演算法等來解決。 5. 對數階 ?(log ?) 與指數階相反,對數階反映了“每輪縮減到一半”的情況。設輸入資料大小為 ? ,由於每輪縮減到一半,因 此迴圈次數是 log2 ? ,即 2? 的反函式。 圖 2‑12 和以下程式碼模擬了“每輪縮減到一半”的過程,時間複雜度為 ?(log2 ?) ,簡記為 ?(log ?) : // === File: time_complexity0 码力 | 379 页 | 18.79 MB | 10 月前3
共 35 条
- 1
 - 2
 - 3
 - 4
 













