iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
Software Development

30天快速打造Python資料結構&演算法邏輯刷爆LeetCode系列 第 1

DAY 1 「開賽說明」Python資料結構&演算法的一切切

  • 分享至 

  • xImage
  •  

還記得大學時代「不同程式語言」/images/emoticon/emoticon08.gif

需要「不同的思維邏輯」
才能快速掌握寫程式碼精髓完成作業

  • C Pointers
  • Java Classes and Objects
  • SQL
  • Python Dataframe

選擇適當資料結構可以提高程式演算法的效率

(甚至有些資料結構是為了解決「特定問題」設計)

  • 資料結構:電腦中在記憶體中儲存使用資料的方式 => 影響程式使用的效率和性能
  • 演算法:一系列運算步驟,可使用虛擬碼、流程圖等表述任意程式語言 => 最佳解決問題的程式流程
    /images/emoticon/emoticon06.gif白話就是 「程式」=「資料結構」+「演算法」
    當你在做大數據或AI會發現,哇!原來list裡的變量(資料結構)還有寫太多for迴圈(演算法)真的會影響你程式run的速度變超慢超慢,就代表沒有按照「既定程式語言的邏輯」去思考問題撰寫程式流程!

/images/emoticon/emoticon39.gif「大O複雜度分析」

A. 資料結構 (Data Structures)

「資料結構種類」
線性結構(如堆疊、佇列)
高階資料結構(如哈希表、集合、字典)
樹狀結構(如堆積、鏈結堆積、二元搜尋樹)
非線性的資料結構(如圖形)

  • 堆疊 (Stacks)
  • 佇列 (Queues)
  • 哈希表 (Hash Tables)
  • 集合 (Sets)
  • 字典 (Dictionaries)
  • 堆積 (Heaps)
  • 鏈結堆積 (Heap Linked Lists)
  • 二元搜尋樹 (Binary Search Trees)
  • 圖形 (Graphs)

B. 演算法 (Algorithms)

「演算法種類」
搜尋(如線性搜尋、二元搜尋)
排序(如冒泡排序、插入排序、選擇排序、合併排序)
圖形(如圖形搜索演算法、圖形最短路徑演算法)
問題求解(如動態規劃、貪心算法)

  • 線性搜尋 (Linear Search)
  • 二元搜尋 (Binary Search)
  • 冒泡排序 (Bubble Sort)
  • 插入排序 (Insertion Sort)
  • 選擇排序 (Selection Sort)
  • 快速排序 (Quick Sort)
  • 合併排序 (Merge Sort)
  • 圖形搜索演算法 (Graph Traversal Algorithms)
  • 圖形最短路徑演算法 (Shortest Path Algorithms)
  • 動態規劃 (Dynamic Programming)
  • 貪心算法 (Greedy Algorithms)

下一篇
DAY 2 「大O複雜度(Big O notation and Time Complexity)」你的程式碼效率如何呢?
系列文
30天快速打造Python資料結構&演算法邏輯刷爆LeetCode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言