Java 的演算法資料結構#1(+面試問題)

基本演算法與資料結構:AVL樹、二元搜尋樹( Binary Search Trees )、陣列( Arrays )、B樹( B Trees )、鍊錶(  Linked Lists )、堆疊( stacks )和HashMap

從這 23 小時的課程,你會學到

  • 掌握演算法和資料結構的基礎知識
  • 檢測非最佳程式碼片段
  • 了解陣列( arrays )和鍊錶( linked lists )
  • 了解堆疊( stacks )和佇列( queues )
  • 了解二元搜尋樹
  • 了解平衡二元搜尋樹( binary search trees ),例如 AVL 樹或紅黑樹( red-black trees )
  • 了解優先權佇列( queues )和堆( heaps )
  • 了解 B 樹和外部記憶體
  • 了解哈希( hashing )和哈希表( hash tables )

要求

基礎 Java(loops 和一些 OOP)

課程說明

本課程是關於資料結構和演算法的。我們將用Java 來實作這些問題。完成課程大約需要 20 小時。強烈建議您自己多次輸入這些資料結構,以便更好地掌握它們。

第 1 節:

  • 資料結構和抽象資料類型

第 2 節 – 陣列 (Arrays)

  • 什麼是陣列
  • 什麼是隨機存取以及如何索引

第 3 節 – 鍊錶( Linked Lists )

  • 鍊錶和雙向鍊錶
  • 鍊錶相關面試問題

第 4 節 – 堆棧( stacks )和佇列( queues ):

  • 什麼是堆棧和佇列
  • heap 記憶和 stack 記憶
  • 可視化堆疊記憶(  stack memory )

第 5 節 – Binary Search Trees (BSTs):

  • 什麼是樹資料結構?
  • 如何實現O(logN)對數運行時間?
  • 二元搜尋樹( binary search trees )

第 6 節 – AVL Trees

  • 二元搜尋樹有什麼問題?
  • 平衡搜尋樹:AVL樹( AVL Trees )
  • 旋轉

第 7 節 – Red-Black Trees

  • 什麼是紅黑樹?
  • 什麼是恢復操作?
  • 比較AVL樹和紅黑樹

第 8 節 – 展開樹 (Splay Trees)

  • 展開樹和快取( caches )
  • 取得最近造訪的項目( item )實作 O(1) 運行時間

第 9 節 – Heaps 與 Priority Queues

  • 什麼是優先隊列?
  • 什麼是堆資料結構?
  • 如何使用堆進行 O(NlogN) 排序?

第 10 節 – B-Trees

  • 外部記憶體和主記憶體(RAM)
  • B樹及其在記憶體中的應用
  • B* 樹和 B+ 樹

第 11 節 – 哈希( Hashing )和哈希映射( HashMaps )

  • 什麼是哈希和哈希表(hashtables ,hashmaps)
  • 什麼是哈希函數( hash-functions )
  • 如何實現 O(1) 運行時間複雜度

第 12 節 – 排序演算法

  • 基本排序演算法
  • 冒泡排序和選擇排序
  • 插入排序和希爾排序
  • 快速排序和歸併排序
  • 基於比較和非基於比較的方法
  • 字串排序演算法
  • 桶排序和基數排序

第 13 節 – 子串搜尋演算法

  • 子串搜尋演算法
  • 暴力子串搜索
  • Z子串搜尋演算法
  • Rabin-Karp 演算法和哈希
  • Knuth-Morris-Pratt (KMP) 子串搜尋演算法

第 14 節 (BONUS)

  • 什麼是 LRU 快取
  • LRU 快取實現

第 15 節 (BONUS)

  • Fenwick 樹(二元索引樹)
  • 二元索引樹的實現

第 16 節 – 演算法分析

  • 如何衡量演算法的運行時間
  • 使用大 O (ordo)、大 Ω (omega) 和大 θ (theta) 符號進行運行時間分析
  • 複雜度等級
  • 多項式 (P) 與非確定性多項式 (NP) 演算法
  • O(1)、O(logN)、O(N) 和其他幾種運行時間複雜度

在每一章中,您將了解每種演算法或資料結構的理論背景,然後我們將在 Eclipse、Java 中逐步編寫程式碼。

大多數高級演算法都與這些主題密切相關,因此絕對值得了解基礎知識。這些原理可用於多個領域:投資銀行、人工智慧或股票市場的電子交易演算法。

感謝您加入課程,讓我們開始吧!

目標受眾

本課程面向從科學家到軟體開發人員等所有想要更接近演算法思維的人

講師簡介

Holczer Balazs 軟體工程師

我的名字是 Balazs Holczer。 我來自匈牙利布達佩斯。 我有資格成為一名物理學家。 目前我在一家跨國公司擔任仿真工程師。 自大學以來,我一直對演算法和資料結構及其實現感興趣,尤其是在 Java 中。 後來我熟悉了機器學習技術、人工智慧、數值方法和處方,例如求解微分方程、線性代數、內插法和外插法。 這些東西在幾個領域可能被證明是非常重要的:軟體工程、研發或投資銀行。 我特別喜歡 Black-Scholes 模型或 Merton 模型等定量模型。

如果您對這些主題感興趣,請查看我的網站!

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

  • Udemy 永久擁有課程 許多課程約 NT400(點擊連結看更多)
  • 年訂閱每月 NT350 🌈 悠遊 Udemy 的 26000+ 門課,最大化學習 ( 原價 NT635/月 )
  • Udemy 現在越來越多課程有中文字幕,請參考 Soft & Share 中文線上課程
  • 手機上點選優惠連結看到的價格比電腦上看到的貴
  • $代表當地貨幣, 如在台灣為 NT
  • 點選”報名參加課程”有可能因瀏覽器 cookies 轉久一點或回報錯誤而無法連上,請稍等刷新或重新點選就會出現

報名參加課程

Sponsored by Udemy


也許你會有興趣

不受 FB 演算法影響,歡迎透過 e-mail 訂閱網站更新

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

由 WordPress.com 建置.

Up ↑

探索更多來自 Soft & Share 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading