基本演算法介紹-搜尋1
搜尋演算法(Searching Algorithms)
【定義】
尋找目標的方法稱為搜尋法
【目的】
為什麼我們需要搜尋演算法?在圖書館找一本書、在Google上鍵入搜尋內容,或者在電腦上搜尋檔案時, 電腦要處理如此大量的資料,因此我們需要快速的演算法來幫助我們快速找到資料。 沒有它們, 在大量資料中,這將花費很長時間。因此,學習搜尋演算法可以來幫助更了解資訊科學的概念。
思考問題:在日常生活中何時會用的搜尋演算法?
【生活應用】
體驗活動1
1.蠟筆小新抽鬼牌下載
2.找盒子(Searching BOX):
進行以下遊戲一並完成解題
part1
遊戲解說:
您可能已經注意到,遊戲框中的數字是隨機排列的,這表示找到目標數字基本上是靠運氣的! 您可能在第一次嘗試時就已經找到了它,或者,如果您不太幸運,則可能必須先查看幾乎所有盒子才能找到它。 這看起來似乎不是一件壞事,因為您有足夠的生命來看所有盒子,但請想像若是有1,000盒子,或者更糟的是1,000,000盒子! 翻遍所有盒子可能要花很長時間,而且可能永遠找不到目標編號。
part2
遊戲解說:
現在,下一場遊戲略有不同。 您的生命減少了,這使事情變得更具挑戰性,但是這次箱子內的數字將井井有條。 編號最小的框在最左側,編號最大的框在最右側。 讓我們看看是否可以找到所有目標數字而不會耗盡生命...
如果您已經玩完了整個遊戲(並希望找到了所有目標數字!),您可能已經注意到,即使您在遊戲的第二部分中的可用生命減少,並且有很多可以搜索的盒子,您仍然能夠找到目標號碼。 為什麼會這樣呢?
【資訊科學應用】
體驗活動2
1.終極猜數字遊戲
思考問題:
2.海戰棋遊戲
二.體驗活動說明
基本搜尋演算法
在不同的資料結構上有各式各樣不同的搜尋演算法,在國中部分針對陣列( Array ) 做搜尋。高中大學部分則是應用在圖形 ( Graph )或樹 ( Tree ),討論的就是深度搜尋跟廣度搜尋。
(1)循序搜尋法(Sequential Search)或線性搜尋法(Linear Search)
是一種在無序或有序陣列中搜尋某一特定元素的搜尋演算法。循序搜尋法又稱線性搜尋法 ,即依序一個元素(Element) 一個元素(Element) 尋找,直到找到為止。 |
(2)二分搜尋法(Binary search)
是一種在有序陣列中搜尋某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要搜尋的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中搜尋,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。 |
原理影片
參考資料
https://sites.google.com/a/ntjh.ntct.edu.tw/105pljh/home/searchalgorithm
https://csfieldguide.org.nz/en/chapters/algorithms/searching/