生活中有許多資料會使用到陣列,其中,查詢陣列的資料是常見的功能。(搜尋陣列)
一、循序搜尋(從第一筆開始依序搜尋到最後一筆)
以班級學生查詢系統為例,提供2個陣列「座號陣列、姓名陣列」,請寫出以下查詢功能:(學生操作檔案)
問座號,回答姓名。
問姓名,回答座號。
以學校的圖書查詢系統為例,提供3個陣列「ISBN陣列、書名陣列、出版年陣列」,請寫出以下查詢功能:(學生操作檔案)
問ISBN,回答書名與出版年。
問書名,回答ISBN與出版年。
問年份,回答有幾本書。
以查詢排名為例,查詢某一個分數的排名。(學生操作檔案、excel檔、1000筆分數檔)
二、二分搜尋(在排序好的資料中,二分搜尋可更快速搜尋到資料)
猜數字遊戲
Q:為什麼需要排序?
A:當陣列的資料量非常大的時候,如果陣列沒有排序,則只能使用線性搜尋,一筆一筆搜尋,非常耗時。如果陣列已經排序,則可以使用二分搜尋,搜尋速度會非常快速。
Q:線性搜尋、二分搜尋的速度差別?
A:假設在1000筆資料中尋找某數,線性搜尋平均要比較500筆資料,而二分搜尋只要比較10筆資料(2的10次方>1000)。假設在10000筆資料尋找某數,線性搜尋平均要比較5000筆資料,而二分搜尋只要比較14筆資料(2的14次方<10000)。
把陣列裡的數字資料,由小到大排序。
選擇排序操作、氣泡排序操作(學習單:任選一個排序方法,把操作結束的畫面擷圖繳交,並說明你使用了什麼排序方法。)
循序搜尋(Linear Search):從第一筆資料開始,一個一個比較,直到找到資料為止。(或者找不到資料)
二元搜尋(Binary Search):比較「中間資料」,如果要搜尋的資料比較大,則再繼續比較中間資料還大的那一半資料,依此類推。(跟猜數字遊戲一樣)
網站
【網站,視覺化搜尋】Linear Search and Binary Search
【網站,視覺化搜尋】Search Algorithm Visualization
【跳舞說明搜尋概念】LINEAR search、BINARY search
【網頁操作二元搜尋】二元搜尋互動(康軒)