iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
自我挑戰組

C++30日挑戰之旅系列 第 20

DAY20 資料結構與演算法簡介

  • 分享至 

  • xImage
  •  

什麼是資料結構?

資料結構(data structure)和演算法(algorithm)是程式內核不可或缺的兩個部分。在鐵人賽的第一到十九天裡,我們從零開始學習如何使用C++來撰寫程式,指的是他的語法與使用方式,而當我們進階到資料結構與演算法時,我們會更深入的解析程式內執行的差異。而這些差異可以幫助我們更加增進不同情況下的"效能"(performance)。藉由資結與演算法的改進,我們能讓原本須執行很久的程式(在裡面我們會用"時間複雜度",time complexity與"空間複雜度",space complexity兩個方面來描述程式),得以迅速(時間複雜度降低)來得到答案。

也許一開始我們在寫程式的時候並不會注意到這麼多差距,想說有達到目的就好,但是在程式執行序多或是專案較大時,我們就可以清楚的感受到他們的差異。而軟體工程師並不是只要達到目的,所需要的更是用"最好的方法"達到目標。而不同的演算法也有針對不同環境與場景下的不同應對措施。


資料結構與演算法概論分布

在資料結構和演算法中,我主要會包含以下幾個主題

  • Array & Stucture(陣列與結構)
  • Stack & Queue(堆疊與佇列)
  • Linked List(鏈結串列)
  • Tree(樹)
  • Heap(堆積)
  • Hashing(雜湊)
  • Basic Graph(圖論)
  • Sorting(排序)

鐵人賽後半部規劃

我們會從sorting的地方進行實作練習與講解,也會對不同的排序法進行比較與時間複雜度比較。那麼藉由今天簡單介紹與分布的keywords,大家可以再深入了解他們各自的差異,或是也可以去交大開放式課程(NYCU OCW)的資料結構中學習更深入的資訊

交大OCW影片連結:http://ocw.nctu.edu.tw/course_detail-v.php?bgid=9&gid=0&nid=412

因為鐵人賽我們還是以實作的部分與解析為主!那麼我們明天見~(。◕ ∀ ◕。)


參考資料:

  1. https://zh.wikipedia.org/zh-tw/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84
  2. http://ocw.nctu.edu.tw/course_detail-v.php?bgid=9&gid=0&nid=412

上一篇
DAY19 時間計算器Class與operator overloading介紹(下)
下一篇
DAY21 插入排序法(insertion sort)介紹
系列文
C++30日挑戰之旅43
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言