0%

Tree 是由 1 個以上Nodes 所組成的有限集合,滿足:

  • 至少有一個 Node,稱為 Root (Tree 不可為空)
  • 其餘的 Nodes 分成 T1, T2, …, Tn 個互斥集合,稱為 Subtree (子集合(子樹)間沒有交集)
閱讀全文 »

  • 具有 FIFO (First-in, First-out) 性質的有序串列
  • 插入與刪除元素的動作發生在佇列的不同端
    • 插入動作發生在尾端 (Rear)
    • 刪除動作發生在前端 (Front)
閱讀全文 »

具有 LIFO (last in-first out) 或 FILO (first in-last out) 性質的有序串列

  • 插入元素的動作稱為 Push, 刪除元素的動作稱為 Pop
  • Push/Pop 的動作皆發生在同一端,此端稱為 Top
閱讀全文 »

定義

由一組節點 (Node) 所組成的有序串列,各 Node 除了 Data 欄之外,另外有 ≥ 1 個 Link 欄 (或稱 Pointer),用以指向其它 Node 之位址。

特質

  • 各Node不一定要佔用連續的Memory空間
  • 各Node之型態 (Data Type) (Data Type) 不一定要相同
  • 僅支援Sequential Access
  • Insert/Delete Node Insert/Delete Node 容易
    閱讀全文 »

  • 為表示有序串列之一種方式
  • 其佔用連續性的記憶體空間
  • 各元素型態皆需相同 (一致)
  • 支援 Sequential SequentialRandom Access Random Access
  • 插入刪除元素較為麻煩
    • ∵ 需挪移其它元素
    • ∴ 不易動態增刪空間大小
    • Time = O(n)
閱讀全文 »

Heapsort 的演算法分為兩大步驟:

  1. 將資料轉換為 heap 資料結構(遞增排序用 max-heap, 遞減排序選擇 min-heap)。
  2. 逐步取出最大/最小值,並與最後一個元素置換。具體步驟如下:
    1. 交換 heap 的 root 與最後一個 node,縮小 heap 的範圍(排序一筆資料,故 heap 長度 -1)。
    2. 更新剩下的資料,使其滿足 heap 的特性,稱為 heap ordering property。
    3. 重複前兩個步驟,直到 heap 中剩最後一個未排序的資料。
閱讀全文 »

Overview

Hardhat 是一個有助於在 Ethereum 上進行構建的開發環境。它幫助開發者在構建 smart contracts 和 dApps 時管理和自動化重複的工作,以及在工作流程中引入更多功能。這意味著從根本上進行 compilie 和 test。

Hardhat 還內建了 Hardhat Network (一個為開發而設計的 local Ethereum network),它允許你 deploy contracts, run tests, debug codes.

閱讀全文 »

Merge sort 利用 divide and conquer 遵循以下三個步驟:

  1. Divide by finding the number q of the position midway between p and r. Do this step the same way we found the midpoint in binary search: add p and r, divide by 2, and round down.
  2. Conquer by recursively sorting the subarrays in each of the two subproblems created by the divide step. That is, recursively sort the subarray array[p..q] and recursively sort the subarray array[q+1..r]
  3. Combine by merging the two sorted subarrays back into the single sorted subarray array[p..r]
閱讀全文 »

遞迴的基本概念就是:

To solve a problem, solve a subproblem that is a smaller instance of the same problem, and then use the solution to that smaller instance to solve the original problem.

閱讀全文 »

想像手上有一副撲克牌,若想要將紙牌從左到右按照「小到大」排序。 Insertion Sort 的方法為:將第i張紙牌加入(insert)「前i−1張排序過」的紙牌組合,得到i張排序過的紙牌組合。 給一張圖就很好理解:

閱讀全文 »