iT邦幫忙

演算法相關文章
共有 304 則文章
鐵人賽 Software Development DAY 28

達標好文 技術 [演算法] 最短路徑 (Dijkstra 演算法)

今天來討論最短路徑的另一個演算法,Dijkstra Algorithm。主要內容是指定一個點 (源點) 到其餘各個頂點的最短路徑,也稱作「單源最短路徑」。我們用...

鐵人賽 Software Development DAY 3

達標好文 技術 [演算法] 快速排序法 (Quick Sort)

有鑒於昨天學的泡沫排序法,效率篇低,就有某位聰明的科學家發明了快速排序法,其實也有用到一點二元分類的概念。 快速排序 (Quick Sort) 的想法是說,先找...

達標好文 技術 【Day33】[演算法]-深度優先搜尋DFS與廣度優先搜尋BFS

深度優先搜尋(Depth-First Search,DFS)與廣度優先搜尋(Breadth-First Search, BFS),是可以用來走訪或搜尋樹節點與圖...

鐵人賽 Software Development DAY 25

技術 [演算法] K-means 分群 (K-means Clustering)

先說說什麼是分群?分群就是對所有數據進行分組,將相似的數據歸類為一起,每一筆數據的能有一個分組,每一組稱作為群集 (Cluster)。那分類根據什麼來定義,常用...

鐵人賽 Software Development DAY 21

技術 【Day21】[演算法]-排序Sort & 氣泡排序法Bubble Sort

排序(Sorting) 排序(Sorting)在電腦領域中是非常普遍且重要工作,即是將一群不規格的資料按照某個規格來重新排列,讓排序過的資料容易閱讀、利於統計整...

鐵人賽 Software Development DAY 29

技術 [演算法] 最短路徑 (Bellman-Ford 演算法)

不論是之前提到過的 Floyd-Warshall 或 Dijkstra 演算法,雖然都很好用也好理解,但卻有一個缺點是無法解決帶有「負權迴路」 (或稱「負權環」...

鐵人賽 Software Development DAY 26

技術 [演算法] 最短路徑 (Floyd-Warshall 演算法)

網路上有各式各樣的地圖出現,背後的運算就有很多的演算法、資料庫和參數來支持。還記得之前討論過有關圖的深度及廣度搜尋,就有提到過怎麼找最短的路徑,而這只是其中最基...

鐵人賽 Software Development DAY 2
從LeetCode學演算法 系列 第 2

達標好文 技術 [Day 2] 從LeetCode學演算法 - 0001. Two Sum (Easy)

目標:這題主要目的在於練習HashMap/Dictionary的應用。 原題: Question: Given an array of integers, re...

鐵人賽 開發技術 DAY 9

技術 [Day09] 30 天挑戰演算法 - 將數字反轉

題目來源:Reverse Integer 問題: 給一個數字,將其反轉 例子: 例如: x = 123, 則回傳 321 例如: x = -123, 則回傳 -...

鐵人賽 Software Development DAY 19

技術 [演算法] 費氏搜尋 (Fibonacci Search)

在討論費氏搜尋之前,要先了解一下費氏數列。 費氏數列 (Fibonacci numbers),又稱費波那契數列,是指在一串數字中,每一項是前兩項的和。數學上的定...

鐵人賽 Software Development DAY 8
從LeetCode學演算法 系列 第 8

技術 [Day 8] 從LeetCode學演算法 - 0053. Maximum Subarray (Easy)

目標:這題主要目的在於學習一個常見的演算法:動態規劃(Dynamic Programming)。 原題: Question: Given an integer...

鐵人賽 Software Development DAY 25

技術 【Day25】[演算法]-合併排序法Merge Sort

合併排序法(Merge Sort)原理是會先將原始資料分割成兩個資料列,接著再將兩個資料繼續分割成兩個資料列,依此類推,直到無法再分割,也就是每組都只剩下一筆資...

鐵人賽 Software Development DAY 5
從LeetCode學演算法 系列 第 5

技術 [Day 5] 從LeetCode學演算法 - 0021. Merge Two Sorted Lists (Easy)

目標:這題主要目的在於引導讀者了解Linked List的資料結構以及基本操作。 原題: Question: Merge two sorted linked l...

鐵人賽 Software Development DAY 23

技術 【Day23】[演算法]-插入排序法Insertion Sort

插入排序法(Insertion Sort),原理是逐一將原始資料加入已排序好資料中,並逐一與已排序好的資料作比較,找到對的位置插入。例如:已有2筆排序好資料,將...

鐵人賽 開發技術 DAY 14
連續30天,挑戰演算法 系列 第 14

技術 [Day14] 30 天挑戰演算法 - 從排序陣列中刪除重複值

題目來源:Remove duplicates from sorted array 問題: 給予一個已排序過的陣列(ARRAY),請計算移 除該陣列中所有重複出現...

技術 要如何證明你所做的電腦模擬就是你問的問題的答案?

我是國中組「柏拉圖的抉擇--競爭參考與期望值的策略模型探討」的作者,今天是第57屆中小學科展複賽第一天。老師問了一個問題: 你都是用電腦模擬,怎麼證明你的模擬...

鐵人賽 Software Development DAY 2

技術 [演算法] 泡沫排序 (Bubble Sort)

拉蒙碎碎念 其實昨天的桶子演算法雖然直覺、簡單好懂,但也遺留了一些問題。舉例來說如果資料很大,就會很浪費空間,或者當資料有小數的時候,沒辦法產生相對應的桶子。因...

鐵人賽 自我挑戰組 DAY 24

技術 Day 24:霍夫曼編碼(Huffman coding)

這回寫到的霍夫曼編碼是在Algorithms Illuminated Part 3: Greedy Algorithms and Dynamic Program...

鐵人賽 Software Development DAY 27

技術 [演算法] 並查集 (Union-find Algorithm)

並查集又稱不相交集資料結構,其實是之前討論過的資料樹的延伸。剛開始的樹每一個都是獨立的,一棵樹只有一個節點。在透過尋找相同的根節點 (root),來將這些樹逐漸...

鐵人賽 Software Development DAY 4

技術 [演算法] 基數排序法 (Radix Sort)

今天來講一個「非比較性」的演算法,基數排序法 (Radix Sort)。其實之前的排序法也是屬於 非比較性 的演算法。怎麼說?以泡沫和快速為例,這兩個演算法都是...

鐵人賽 Software Development DAY 16

技術 [演算法] 二分搜尋 (Binary Search)

還記得之前討論過的樹嗎?都會分成左子樹和右子樹,而二分搜尋也是遵循這樣的邏輯來運算的。 二分搜尋 (Binary Search) 是取 已排序資料的中間索引的值...

鐵人賽 Software Development DAY 1

達標好文 技術 [演算法] 桶子排序法 (Bucket Sort)

拉蒙碎碎念 還記得以前剛學程式設計的時候,老師都會從幾個較簡單的演算法教起,讓學生比較好學也快上手。其實演算法就是在學邏輯,語法啊、技巧啊,我個人倒覺得是其次。...

達標好文 技術 用基因遺傳演算法(Genetic Algorithm)解旅行推銷員問題(TSP)

這篇文章主要敘述我用基因遺傳演算法解旅行推銷員問題,用的語言是Python。這邊會一步一步帶過程式碼,之後也會上傳到Github。演算法參考:https://t...

鐵人賽 Software Development DAY 4
從LeetCode學演算法 系列 第 4

技術 [Day 4] 從LeetCode學演算法 - 0015. 3Sum (Medium)

目標:這題主要目的在於練習Two Pointer類型的問題應用。 原題: Question: Given an array nums of n integers...

鐵人賽 Software Development DAY 22

技術 【Day22】[演算法]-選擇排序法Selection Sort

選擇排序法(Selection Sort),原理是反覆從未排序數列中找出最小值,將它與左邊的數做交換。可以有兩種方式排序,一為由大到小排序時,將最小值放到末端;...

鐵人賽 影片教學 DAY 1

達標好文 技術 資工系在學些什麼,有用嗎?

大家好: 我是紫楓,之前曾經在巴哈姆特發表一個關於軟體工程師,問都給問的文 其中有很多個問題是關於 我是學生,我該學什麼? 我想轉職,我該學什麼? 我想精益求...

鐵人賽 Software Development DAY 3
從LeetCode學演算法 系列 第 3

技術 [Day 3] 從LeetCode學演算法 - 0014. Longest Common Prefix (Easy)

目標:這題主要目的在於練習常見的字串比對處理。 原題: Question: Write a function to find the longest commo...

鐵人賽 Software Development DAY 26

技術 【Day26】[演算法]-快速排序法Quick Sort

快速排序法(Quick Sort)又稱分割交換排序法,是目前公認效率極佳的演算法,使用了分治法(Divide and Conquer)的概念。原理是先從原始資料...

鐵人賽 Software Development DAY 3

達標好文 技術 演算法比你想像的重要

如果是非本科系一個剛轉職沒幾年的超級菜鳥很多人應該是沒有任何DSA的任何一丁點基礎的或甚至是本科系的菜鳥但是大學教DSA的時候還沒意識到這個東西還蠻重要的所以根...

鐵人賽 自我挑戰組 DAY 14

技術 【第十四天 - Linked list介紹】

Q1. linked list是什麼 是一種資料結構,透過很多節點(Node)串接成一個 linked list 型態的資料。 以 python 宣告的 Li...