iT邦幫忙

自學筆記相關文章
共有 302 則文章
鐵人賽 自我挑戰組 DAY 30

技術 Day-30 完賽心得

經過了漫長的30天,終於完賽了,好險暑假有先屯個15篇,要不應該是沒辦法完賽了,由衷地佩服那些真的每日一篇的大大們~~ 一開始參加鐵人賽的動機是覺得大一念完,覺...

鐵人賽 自我挑戰組 DAY 29

技術 Day-29 Depth-First-Search(DFS), 深度優先搜尋

DFS介紹 與昨天BFS不同的地方在於,BFS是給定一個節點s,接著找到s可以到達的所有節點,而DFS是遍歷整張圖,如果我們給定特定的節點s,我們使用BFS可能...

鐵人賽 自我挑戰組 DAY 28

技術 Day-28 Breadth-First Search(BFS), 廣度優先搜尋

BFS簡介 BFS是用來遍歷一張圖的最簡單演算法,也是很多在圖論演算法的原型,許多演算法都是基於BFS,像是Prim最小生成樹,Dijkstra演算法等等。 給...

鐵人賽 自我挑戰組 DAY 27

技術 Day-27 圖論(Graph)基本概念

圖(Graph)的表示 圖(Graph) 圖,是一種記錄節點和節點之間關連的表示法。對於圖,表示是由集合和集合共同構成的集合,集合中的元素為圖中的節點,故又稱點...

鐵人賽 自我挑戰組 DAY 26

技術 Day-26 Hash Table-開放定址(Open Addressing)

open addressing概念 前面提到,在Hash table中發生碰撞時,我們會使用chaining的方式處理,也就是在每一個slot中建立一個link...

鐵人賽 自我挑戰組 DAY 25

技術 Day-25 Hash Function(雜湊函數), 乘法雜湊法, 除法雜湊法

Hash function 一個好的雜湊函數,可以把均勻的分佈在雜湊表的每一個slot中,也就是盡量滿足簡單均勻雜湊的假設,而且分布的均勻性,不會受到元素的影響...

鐵人賽 自我挑戰組 DAY 24

技術 Day-24 Hash Table(雜湊表)

字典(Dictionary) 抽象資料結構 在字典裡,有個物品,每一樣東西都會跟隨著一個(假設物品和物品之間,不會有相同的),我們可以透過去找出我們想要的物品,...

鐵人賽 自我挑戰組 DAY 23

技術 Day-23 AVL Tree

樹的高度(height of the tree) 在Binary Search tree中,我們知道我們可以在的時間內,完成Delete, find min,...

鐵人賽 自我挑戰組 DAY 22

技術 Day-22 樹(Tree), 二元搜尋樹(Binary Search Tree)

前言 對於大量的資料處理,使用串列的走訪是一種十分沒有效率的方法,其效率會根據串列的長度而不斷線性成長,也就是,而樹(tree)這種資料結構,其大部分的操作時間...

鐵人賽 自我挑戰組 DAY 21

技術 Day-21 隊列(Queue)與循環對列(Circular Queue)

隊列(queue)介紹 隊列就如同堆疊一般,是一種線性表,與堆疊不同的地方在於,堆疊的push和pop操作都是在棧頂(Top)的地方進行操作,而隊列則是插入元素...

鐵人賽 自我挑戰組 DAY 20

技術 Day-20 堆疊(Stack)

堆疊介紹 堆疊是限制插入元素和刪除元素只能在同一個位置的表(list),該位置一般來說稱為棧頂(Top)。對堆疊的基本操作有 Push(推入,將資料加到棧頂)...

鐵人賽 自我挑戰組 DAY 19

技術 Day-19 ADT與鏈結串列(linked list)

前言 鏈結串列(linked list)是由一連串的結構(由 struct 所建立的節點)所構成,每一個節點中都含有兩筆資料,分別為節點的內容和下一個節點的記憶...

鐵人賽 自我挑戰組 DAY 18

技術 Day-18 BFPRT演算法

最壞情況為,BFPRT演算法 在由隨機數決定陣列的分割的情況下,我們如何避免產生出最差情況(雖然出現的機率很小),或是讓最差的情況時間複雜度也是。 BFPRT演...

技術 Python 演算法 Day 10 - Feature Selection

Chap.II Machine Learning 機器學習 https://yourfreetemplates.com/free-machine-learn...

鐵人賽 自我挑戰組 DAY 17

技術 Day-17 中位數與順序統計

最大值與最小值 在一個有n個元素的,未經排序的陣列中,如果我們要找到最小值,我們可以將一個陣列進行排序,使用merge sort等等方式,接著回傳該陣列的第一個...

鐵人賽 自我挑戰組 DAY 16

技術 Day-16 雇用問題, 指示器隨機變數(indicator random variable), 隨機化演算法

雇用問題 假設你要雇用新的辦公助理,而你找了一個雇用代理人去幫你推薦應聘的人,雇用代理人每天會給你推薦一個人。接著你會去面試這個人,並決定是否要雇用他。 因為雇...

鐵人賽 自我挑戰組 DAY 15

技術 Day-15 線性時間演算法 : Bucket sort

bucket sort(桶排序) 假設輸入平均分布,也就是輸入的陣列每一種組合情況都是機率均等的,平均情況下他的時間複雜度為。和counting sort類似,...

鐵人賽 自我挑戰組 DAY 14

技術 Day-14 線性時間演算法 : Radix sort

radix sort(Herman Hollerith) 基數排序(radix sort)是種應用在打孔卡排序機上面的演算法,每一張卡片有80列,在每一列上機器...

鐵人賽 自我挑戰組 DAY 13

技術 Day-13 線性時間演算法 : Counting sort

Counting sort Input : Output : Aux(auxiliary) array : Counting sort假設一個陣列中有個整數,...

鐵人賽 自我挑戰組 DAY 12

技術 Day-12 決策樹(decision tree)

排序的速度 Quicksort,需要heapsort,需要merge sort,需要insertion sort,需要 在前幾天的時間我們看到了這一些演算法,我...

鐵人賽 自我挑戰組 DAY 11

技術 Day-11 priority queue

Priority queue Priority queue和queue一樣也有兩種形式 : max priority queue和min priority qu...

鐵人賽 自我挑戰組 DAY 10

技術 Day-10 heap與heap sort

Heap Heap(堆積)是一個陣列,可以把它看作類似完全二元樹(也就是按照順序排放的樹)。p.s : 樹是一種資料結構,大部分的操作時間複雜度平均為樹將在後面...

鐵人賽 自我挑戰組 DAY 9

技術 Day-9 Divide-and-Conquer-4 : Quicksort, 隨機化Quicksort

Quicksort- Tony Hoare - 1962 和merge-sort一樣,他使用了Divide and conquer的想法,下面是對於一個陣列進行...

鐵人賽 自我挑戰組 DAY 8

技術 Day-8 Divide-and-Conquer-3 : 二分搜尋法, 費波那契數列, Strassen’s演算法

二分搜尋法(Binary Search) 前提,在一個已經排序完成的A陣列中Divide : 元素x和A陣列的中間元素進行比較Conquer : 在其中一個子陣...

鐵人賽 自我挑戰組 DAY 7

技術 Day-7 Divide-and-Conquer-2 : 求解遞迴式

如何求解遞迴式 目前主要有三種方法來求解遞迴式(至今沒有任何一個好的演算法可以有效地解決遞迴式) 代換法(substitution method) 他主要遵循以...

鐵人賽 自我挑戰組 DAY 6

技術 Day-6 Divide-and-Conquer-1 : merge sort

設計演算法 我們可以選擇的演算法設計技術有很多種。插入排序使用了遞增逼近(incremental approach)的方法 : 在排序子陣列之後,將單個元素插入...

鐵人賽 自我挑戰組 DAY 5

技術 Day-5 演算法分析工具 : 漸進式符號(Big-O, Big-Theta, Big-Omega)

前言 比較合併排序法與插入排序法,一旦輸入n的規模足夠大時,合併排序在最壞情況所需的時間Θ,而插入排序法在最壞情況所需的時間為Θ,當n足夠大時,合併排序法的效率...

鐵人賽 自我挑戰組 DAY 4

技術 Day-4 演算法分析概念

分析演算法 分析演算法,即是分析一個演算法的效率,來決定我們要使用哪一種演算法,而效率的分析方式通常會使用時間進行分析,忽略記憶體,或是頻寬之類的議題。 在分析...

鐵人賽 自我挑戰組 DAY 3

技術 Day-3 insertion sort與循環不變式

插入排序(insertion sort) Input: 一連串正整數所成的集合 { }Output: 一連串已經過排序的正整數集合 { },且 雖然概念上我...

鐵人賽 自我挑戰組 DAY 2

技術 Day-2 演算法介紹

演算法(Algorithms) 大致上來說,演算法為具有明確定義的計算過程,根據輸入得到不同的輸出,演算法就是一個將輸入變成輸出的一連串的計算過程,且須要具備五...