概念 二分搜尋是一種在已經排序過的資料中快速找到目標資料的高效率的演算法。這個方法建立在一個基本的觀念上:將資料集一分為二,然後根據目標資料與中間元素的大小比較...
Greedy Algorithm Greedy Algorithm 是一種常見的演算法設計方法,通常用於求解最佳化問題。 它的基本思想是在每一步都做出當前看起來...
前言 今天是中秋節,所以就分享一些學習資源以供大家自學、參考,以下資源皆為免費內容,請安心服用 講義 以下是我過去所使用過的學習資源,有些因為難度太高半途而廢,...
Matrix Chain Multiplication Matrix Chain Multiplication 通常是在計算機科學和數學中討論的,其目標是找到一...
前言 今天講解三題相關題目,希望大家可以透過這三題更加瞭解遞迴形式的使用方式及時機 UVa 834 - Continued Fractions 題目說明 簡單來...
Coin Change Problem 如何以最少的硬幣數量來湊出特定金額的錢。 這個問題可以用簡單的方式描述如下: 假設我們有一些不同面額的硬幣,每種面額的硬...
Longest Increasing Subsequence Longest Increasing Subsequence 是在一個數字序列中找到一個具有最大長...
概念 有些人認為遞迴僅是在運行過程中,直接或間接地持續呼叫自己的一個函式。 然而,我認為遞迴的基本概念更深入,它是一種將一個大問題分解成多個子問題的方法,並透過...
Dynamic Programming Dynamic Programming 是一種在計算機科學和數學中常用的問題解決方法。 它的主要策略是將一個複雜的問題拆...
前言 今天帶三題題目,希望大家可以經過這三題的練習更加瞭解排序演算法與在競賽、解題中的使用 UVa 10327 - Flip Sort 題目說明 白話來說就是要...
前言 昨天介紹一些比較基本的排序演算法,今天介紹進階的排序演算法與 C++ 內更方便使用的函式 更快的排序 以下的排序法會利用一些遞迴或是其他技巧來避免掉許多不...
補一下前幾天的演算法類型 ~ Single Source Shortest Paths Single Source Shortest Paths 是圖論和計算...
Bellman-Ford Algorithm Bellman-Ford 演算法是一種用於解決最短路徑問題的演算法,可以處理包含負權重邊的圖。 演算法 初始化...
為何學排序? 排序為最基本也最容易上手也最泛用的演算法,解題方面有時候如果將資料排序過也會更容易解題或是大大降低時間複雜度,因此,如何更快的排序資料就成為了我們...
Topological Sort Topological Sort 是一種在有向無環圖(DAG)中對節點進行排序的算法。 它通常應用於解決依賴關係的排序問題,例...
概念 首先,讓我們使用一個不太常見的比喻來解釋演算法的概念。我們將繼續以拉麵為例,製作一碗美味的拉麵需要經過多個步驟,例如製麵、熬湯、煮麵、製作叉燒和添加配料等...
Graph 圖(Graph)是一種用來表示物件之間關係的數據結構。 它由節點(或稱為頂點)和邊組成,節點代表物件,而邊則代表這些物件之間的關係。 圖可分為有向圖...
Red-Black Tree Red-Black Tree 是一種自平衡二叉搜索樹,用於數據結構中的排序和檢索操作。它於樹中節點的顏色標記,以確保樹的平衡性。...
Tree 在第 7 天的文章中,我們介紹了 Tree。 Tree(樹)是一種資料結構,是具有樹狀結構性質的資料集合。 接下來我們要介紹兩種不同類型的樹。 Bin...
有了昨天的介紹後,我們今天來介紹它們的演算法! Counting Sort Counting Sort 是一種用於排序一組數字的演算法,它主要適用於範圍較小的非...
在介紹 Counting Sort、Radix Sort、Bucket Sort 之前,我們必須理解它們與之前提到的排序不同之處 不依賴比較操作:Counti...
今天我想來點 CLRS 我們會透過 Introduction to Algorithms 來講解 Quick Sort 和 Heap Sort Quick S...
何謂複雜度 通常在解題或打競程時都會看到題目有時間與記憶體限制,而這基本上會跟你程式的時間/空間複雜度(Time/Space Complexity)有關。 ex...
今天就透過一些有趣的短片來解釋 Insertion Sort 和 Merge Sort 吧 ~ Insertion Sort Insertion Sort 通...
簡介 首次參與鐵人賽,我將在為期 30 天的比賽中,分享我多年來在參加比賽中所學到的資料結構和演算法知識。我將深入探討這些主題的概念,同時不定時比較高中和大學競...
Sorting 剛開始先介紹排序,把數字由小排到大或由大排到小。 以下是相關排序演算法的時間複雜度跟空間複雜度 今天是 Bubble Sort 和 Selec...
Tree Tree(樹)是一種資料結構,是具有樹狀結構性質的資料集合,根朝上,而葉朝下,它具有以下的特點: 每個節點都只有有限個子節點或無子節點 沒有父節點...
Hash Table Hash Table(哈希表),是透過 Hash Function 計算出一個 key 與 value 所對應的位置,進而建立雜湊表格,而...
今天要實做兩個著名的資料結構 Stack 和 Queue Stack 是一種後進先出(Last-In-First-Out,LIFO)的資料結構,其中最後添加...
第 2 天開始了!!! 環境設定 本身作業系統是用 Ubuntu 22.04.3 LTS 所以環境設定僅供參考 其他作業系統可以參考這篇 建立可用指令編譯與執行...