基本演算法介紹-排序
基本演算法的介紹課程脈絡
演算法基本概念
日常生活演算法
資料引用:課程詳細說明和學習單 (請點此):https://curriculum.code.org/csf-18/coursea/3/
Q:你覺得演算法是甚麼?你還可舉出日常生活中應用排序演算法的例子嗎?
解說:
演算法就是對特定問題解決的流程或步驟 |
範例:橘子汁
今天輸入一顆橘子,想要得到一杯橘子汁,中間可能經過果汁機.手....。只要最後可以順利得到橘子汁,中間的過程就可以稱為它的演算法。
範例:食譜
按照食譜安排的程序一步一步去做,就可以做出一道預期中的菜餚,該食譜提供的就是一種演算法。
資訊科學演算法
學習單(新北科技輔導團)
演算法進階研究
資訊科學(Computer Science)演算法應用
跨領域研究
人工智慧(AI)
1984年電影神通情人夢
什麼是 AI?
圖片引用https://scitechvista.nat.gov.tw/c/sT0Y.htm
AI從最廣泛的意義上來說:是任何可以自行學習、理解和行動的機器,並在遇到新情況時決定如何反應。現有AI大都是建立在「機器學習」,或更精確地說「深度學習」的架構上,由巨量數據中摸索出特定的規律與模式,並以此來做出預測。
圖片引用https://medium.com/ai-for-k12/ai4k12-ai-for-oceans-2257f16dfa86
AI如何消化大量數據資料?
要靠演算法。演算法就是機器人的消化系統,負責讀取、消化大數據,同時產出結果。
每個會寫程式的人,都可能創造自己的演算法,因此有高低優劣之分。好的演算法,會造就聰明的大腦,也就是聰明的AI,以及高IQ的機器人。
http://ccckmit.wikidot.com/ai:nlp
AI應用
Q:你覺得人工智慧應用在生活中會帶來哪些正面及負面(隱憂)的影響?
實作-GoogleAI體驗
1.AI猜測你想畫的,推薦插圖供你選用...「AutoDraw」~人人都能快速畫圖。
2.提供相片讓AI畫畫看...「Cartoonify」~利用類神經網路將相片轉變成卡通。
3~5皆為指定題目後操作:
3.你畫了什麼,AI說出來...「Quick,Draw!」~讓 AI 類神經網路猜猜你正在畫什麼。
4.你畫一部分,AI接手畫...「Sketch-RNN Demos」~與類神經網路一起繪圖。
5.你邊畫,AI邊推薦下一筆畫...「Scrying Pen」~利用 SketchRNN,即時預測你的繪圖軌跡。
6.寫幾個英文字,AI仿筆跡寫出...「Handwriting with a Neural Net」~類神經網路模仿你的手寫風格來寫字。
實作-AI for Ocean
任務說明
https://medium.com/ai-for-k12/ai4k12-ai-for-oceans-2257f16dfa86
相關課程
演算法基本概念小結:
小結:
當演算法統治及改變世界時,認識演算法就是義務 |
排序演算法(Sorting algorithm)
在資訊科學與數學中,一個排序演算法是一種能將一串資料依照特定排序方式進行排列的一種演算法。最常用到的排序方式是數值順序以及字典順序排序法,就是將一堆沒有排序過的數字由小到大(或大到小)排列好的演算法
日常生活的應用
範例
(1)排身高.成績......
範例2-會考高中職分數排序
(1)遊戲規則
(2)落點預測(分數排序)
(3)會考成績單區間分數人數排序
會考積分: 範例1 會考積分:32.8分 個別序位(不分性別)區間:5.53%(2444人)~5.84%(2581人) 範例2 會考積分:29.8 分 範例3 會考積分:20.6 分 範例4 會考積分:17.8 |
(4)會考填志願排序
Q:你還可舉出日常生活中應用排序演算法的例子嗎?它重要嗎?
牛刀小試1-排序遊戲體驗1
撲克牌排序遊戲
排序(sort)演算法種類
已知的排序演算法超過幾十種,常見的排序演算法有:
解說
實際上電腦在執行時花了很多的時間在把資料排序。所以研究創造正確及快速的排序方法一直是資訊科學家的重要工作之一。
A.比較慢的排序法
氣泡排序法、選擇排序法、插入排序法
B.比較快的排序法
合併排序法、快速排序法
C.排序法的效率
舉例來說:如果有十萬筆資料要排序,快速排序法大概比選擇排序法要快上2000倍。若資料總數上升至一百萬筆,那麼兩種排序法所花的時間會差上20000倍。
參考資料
https://sites.google.com/yhps.tn.edu.tw/106grade6scratch/%E9%A6%96%E9%A0%81?authuser=0
牛刀小試2-排序遊戲體驗2
利用天平找出容器的重量排序
遊戲玩法:
按下「開始」之後,利用畫面中央的天平,將畫面上八個瓶子按照重量大小順序排列,排列後按下「完成」,並檢查你的答案是否正確。對於順序的排列,如果有更好的方法,可以有效地減少完成所需的時間
解說:
https://sites.google.com/ntjh.ntct.edu.tw/cstt/06-%E6%8E%92%E5%BA%8F%E6%BC%94%E7%AE%97%E6%B3%95
氣泡排序法(Bubble sort)
牛刀小試3-觀察及操作氣泡排序法
A.觀察
https://scratch.mit.edu/projects/15197205
B.動畫操作
https://www.khanacademy.org/computing/computer-science/algorithms
C.原理解說
影片來源:https://www.bilibili.com/video/BV13J411L72U/?spm_id_from=trigger_reload
Q:經過上述的體驗活動你覺得它為何稱為氣泡排序法?它有何特色?
解說:
參考資料
氣泡排序法 (Bubble Sort)程式實作篇(老師可依學生程度實作.此為高一課綱)
A.變數在程式設計中的涵義
變數是程式語言的一個基本元素,可以存放文字或數字資料,在程式執行時可以隨時改變變數的內容,一個變數只能存放一筆資料,兩筆資料就需要兩個變數。如果有很多筆資料要存放,可以使用陣列來存放,在Scratch稱為清單。.這些資料可能是氣溫值.玩家的得分等等.在程式設計中我們需要對資料進行儲存.需要容器(盒子)來儲存.這個(容器)盒子就叫做變數.
生活範例
變數-食物盒 變數名稱-食物盒標籤 變數內容(值)-食物盒的內容 |
B.變數儲存資料方式-(指定運算子或賦值運算子)
牛刀小試1:Scratch變數賦值觀念
C.暫存變數temp
有時在程式中,可能出現「temp」變數的身影,temp為temporary這個字的縮寫,取前四個字母作為變數名稱。為何在運算、資料處理過程中需要使用暫存變數temp呢?舉例說明如下:
資料來源:108課綱高一資訊科技科友出版
氣泡排序Scratch教學影片
解說:
問題抽象化(將具體問題抽象為數學符號.建立數學模型)
第一輪排序:在左端的第1張紙牌 上方放置紅色瓶蓋標記為j. 在第5張紙牌上方放置藍色瓶蓋標記為i. 然後從右至左依序查看i和i-1位置相鄰的的兩張紙牌並比較兩張牌的大小.如果紙牌i小於紙牌i-1則交換兩者的位置.然後將藍色瓶蓋向左移動1步(i=i-1).重複上述操作直到藍色瓶蓋與紅色瓶蓋碰在一起.將j位置的紙牌翻開到此結束第一輪排序.最後一張紙牌2點被移動到正確位置
第二輪排序:將紅色瓶蓋向右移動1步(j=j+1). 將藍色瓶蓋移動到最右邊(i=5).然後依照前述的步驟進行比較及交換.直到藍色瓶蓋與紅色瓶蓋碰在一起將j位置的紙牌翻開.到此結束第二輪排序.紙牌4點被移動到正確位置
第三輪排序: 重複上述的排序步驟. 紙牌6點被移動到正確位置
第四輪排序: 重複上述的排序步驟 紙牌7點被移動到正確位置.而紙牌8點也處於正確位置
整個氣泡排序過程結束 5張紙牌已經按照從小到大的順序排列完畢
參考積木