iT邦幫忙

2022 iThome 鐵人賽

DAY 1
0
Software Development

闖進Python異世界系列 第 1

[Day 01] 闖進Python異世界 - 聽過收納箱嗎?

  • 分享至 

  • xImage
  •  

相信大家對基本的語法都有初步的了解,如 if elif else, for loop, while loop...

熟悉基本語法的下一步是什麼?是資料結構演算法

西元1984年的圖靈獎得主 Niklaus Wirth 曾經提出 "Programs = Data Structures + Algorithms" ,翻譯成中文「程式=資料結構+演算法」,由此可知我們的下一步至關重要!


資料結構

根據一些資料的特性,也許是相似性,也可能是相關性,我們把他們包裝成一個物件,這個物件稱為一個資料結構

舉例來說:

我們要存取全班20人的成績:

  • 第一個方法是宣告20個變數,分別存取大家的成績
  • 第二個方法是宣告一個列表(List),依照索引值(index)存取大家的成績

有沒有一種把散落移地的玩具收盡收納櫃的感覺呢?第二種方法是不是好多了!

其實,我們常用的這個 List 就是一種資料結構!


列舉一些常見的資料結構:

  1. 陣列(Array) / 列表(List)
  2. 字典(Dict)
  3. 堆疊(Stack)
  4. 佇列(Queue)
  5. 鏈結串列(Linked List)
  6. 樹狀結構(Tree)
  7. 圖狀結構(Graph)
  8. 堆(Heap)
  9. 雜湊(Hash)

演算法

演算法 是解決問題的方法!
既然是解法,那就有分有效率的解法和一般的解法。

舉例來說:

如何在地圖上找到最短路徑?

  • 窮舉出所有路徑,裡面一定包含最短路徑
  • Dijkstra Algorithm

第一種方法雖然一定可以找到答案,但是速度相對慢了許多。
第二種方法是由圖靈獎得主提出的演算法,時間複雜度相對低了不少。
那我們就會說 Dijkstra Algorithm 是解決這個問題相對好的演算法。

也許在學習刷題時,你會需要把一串數字由小到大排列,但是你發覺當數字數量變大時,程式所花的時間變得極長!
為什麼呢? 原因可能是你使用了速度較慢的演算法!
排序演算法曾經是一個很熱門的研究問題,許多人也提出了各自的演算法:

  1. 泡沫排序法(Bubble Sort
  2. 選擇排序法(Selection Sort
  3. 插入排序法(Insertion Sort
  4. 快速排序法(Quick Sort
  5. 合併排序法(Merge Sort
  6. ...

接下來的鐵人賽,我們的重心會擺在介紹一些基礎的資料結構,並用 Python 實作


下一篇
[Day 02] 闖進Python異世界 - List
系列文
闖進Python異世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言