iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
IT管理

邁向時間管理大師之路系列 第 5

資料結構的重要性

在程式入門的討論社團中有一種類型的年經文,像是:

  • 資料結構到底重不重要?
  • 不會資料結構可以寫程式嗎?

我想答案是: 就算你不會資料結構,你也寫得出程式。不過,如果你注重程式的執行效率的話,資料結構絕對是必備的知識之一!

進入正題

開設資料結構的老師與第三天提到的 UCOMP 微算機實習的老師是同一人 (也就是我的恩師)。
這門課是採英文授課的,整個學期要教完所有基礎的資料結構,所以課程算是相當緊湊。
那一學期老師一共上了:

  • Sorting problem
  • Asymptotic notations
  • Devide and Conquer
  • Recursion
  • Merge sort
  • 3 method for evaluating recurrences
  • Linked list
  • MultiList
  • Binary Tree
  • BST
  • RB Tree
  • AVL Tree
  • Hash Tables
  • Graph

題外話: 因為老師選用的課本是演算法聖經,所以簡單的演算法都有提到,到我三下修了計算機演算法時,除了 Dynamic programming 是老師當時沒有提到的以外,其他都被他給講完了 XD

不過說到這邊,沒有資料結構基礎的同學可能也還是不明白它的重要性,資料結構的概念就非常像是教你怎麼安排教室的桌椅,如果教室是:

  • 一排一排 (向補習班那樣)

這樣坐在中間位子的同學就非常不方便入座,但是可以容納很多人。

  • 群組式排法

因為空間非常大,所以學生要回座位非常輕鬆,但是會浪費大量的空間,而且同學會聊天

  • 行列式排法

就像是一般國中小那樣,空間使用率跟回座位的方便性都屬於一般般,可以算是折衷的作法。

至於演算法,就有點像是座位分配的機制:

  • 關係不好的同學坐在一起
  • 按照身高排
  • 成績好的先選
  • 按照座號排序

每個排法都有它的優缺點,這就是演算法的魅力所在。

刷題的重要性

不知道從什麼時候開始,科技公司非常喜歡在面試時考驗工程師的解題能力。
如果要在最快時間內以最佳的辦法處理掉題目的需求,資料結構與演算法幾乎是必備的技能

但我本人其實非常討厭刷題,因為我覺得為了刷題而寫程式還蠻沒意義的,所以我一直都對這塊興致缺缺。
是說交大資工所也會要求學生要在 CPE 中解出至少三題,所以為了畢業證書,我之後也得乖乖刷題了 XD


上一篇
第一次參加鐵人賽
下一篇
進實驗室啦!
系列文
邁向時間管理大師之路30

尚未有邦友留言

立即登入留言