iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
自我挑戰組

資料結構與演算法-CS61B學習筆記 系列

本次系列文為UC Berkeley的資料結構課程,課程代號CS61B,教授為Josh Hug:
https://sp19.datastructur.es/

根據Josh Hug教授的聲明,其教材為Creative Commons 4.0 BY-NC-SA license,意指其教材內容可供任何非營利用途來使用或二創,但其二創內容同樣也須為Creative Commons 4.0 BY-NC-SA license

Josh Hug教授License聲明原文:
https://joshhug.gitbooks.io/hug61b/content/

鐵人鍊成 | 共 30 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day01-IntList (LinkedList Intro)

大家一開始學習程式語言的時候,一定會學到陣列(array),array有一個蘿蔔一個坑的特性,透過每個坑的index來控制讀取與寫入: int[] array...

2023-09-13 ‧ 由 kirin0127 分享
DAY 2

Day02-SLList (sentinel node)

上一章節我們的IntList實作了get和size方法,這邊就來談談add方法。 我們該如何在IntList加元素呢? IntList L = new IntL...

2023-09-14 ‧ 由 kirin0127 分享
DAY 3

Day03-DLList (solve addLast issue)

上一章節我們實作出了一個LinkedList的類別,可以做到基本的操作。不過有一個地方其實有點不太完美,那就是addLast方法的效能不太好,當list的元素很...

2023-09-15 ‧ 由 kirin0127 分享
DAY 4

Day04-AList (solve ArrayList size issue)

這章節來探討AList,array list的意思。 首先提到當我們要使用get(index)從list中拿出元素時,SLList就會比AList慢,因為SLL...

2023-09-16 ‧ 由 kirin0127 分享
DAY 5

Day05-Asymptotics

假設我們有一個排序好的array int[] A如下: [-3, -1, 2, 4, 4, 8, 9, 11] 我們希望知道A存不存在兩個index i, j...

2023-09-17 ‧ 由 kirin0127 分享
DAY 6

Day06-Disjoint Set

Disjoint Set是一個判斷元素和元素之間是否連結的ADT(Abstract Data Type): Interface DisjointSet<I...

2023-09-18 ‧ 由 kirin0127 分享
DAY 7

Day07-Map & Set (BST)

這章節要來探討Map和Set背後的實作到底怎麼做到的。 先前討論過LinkedList,其實就是一個可行的實作方法,但是有個致命的缺陷,就是add跟contai...

2023-09-19 ‧ 由 kirin0127 分享
DAY 8

Day08-B-Tree (2-3 tree, 2-4 tree)

上一章節介紹的BST可以有很讚的Θ(LogN)效能做到insert和contains方法,但其實有個很實際的問題我們還沒有想到,那就是如果當我們今天要加入的元素...

2023-09-20 ‧ 由 kirin0127 分享
DAY 9

Day09-Red-Black Tree

上一章節我們為了解決BST有可能成為spindly tree的議題,介紹了可以永遠保持balance的B-Tree;但其實有一種更直覺的方式就可以讓BST變得b...

2023-09-21 ‧ 由 kirin0127 分享
DAY 10

Day10-Hash Table

這章節要介紹另一種資料結構,Hash Table。 先前提到了很多關於Binary Search Tree的各種概念,但他們其實有個限制條件,就是元素要能夠co...

2023-09-22 ‧ 由 kirin0127 分享