第一篇:《對(duì)分查找及其算法實(shí)現(xiàn)》教學(xué)設(shè)計(jì)
《對(duì)分查找及其算法實(shí)現(xiàn)》教學(xué)設(shè)計(jì)
湖北省巴東縣第一高級(jí)中學(xué) 劉少銀
一、教材學(xué)情分析
本次課是浙江版高中信息技術(shù)選修教材《算法與程序設(shè)計(jì)》第二章算法實(shí)例第四節(jié)查找中的一部分內(nèi)容。由于教材體系不適合校本實(shí)際,我們?cè)诮虒W(xué)過程中對(duì)教材體系作了如下調(diào)整。
講授順序:第一章 算法和算法的表示、第三章 面向?qū)ο蟮某绦蛟O(shè)計(jì)的基本知識(shí)、第四章 VB程序設(shè)計(jì)初步、第二章算法實(shí)例,第五章 算法實(shí)例的程序?qū)崿F(xiàn)穿插在相關(guān)內(nèi)容教學(xué)中完成。
因此在前期教學(xué)中學(xué)生已經(jīng)初步掌握了算法基礎(chǔ)及算法表示,VB程序設(shè)計(jì)初步等。本次課是讓學(xué)生掌握對(duì)分查找的思想及算法的實(shí)現(xiàn)。
二、教學(xué)目標(biāo)
知識(shí)與技能:理解對(duì)分查找的基本含義、方法,理解并能畫出對(duì)分查找的流程圖;
過程與方法:通過案例分析、直觀觀察,增強(qiáng)分析問題和解決問題的能力;
情感、態(tài)度與價(jià)值觀:感受信息技術(shù)與現(xiàn)實(shí)生活的關(guān)聯(lián),激發(fā)對(duì)信息技術(shù)學(xué)科的求知欲,培養(yǎng)主動(dòng)學(xué)習(xí)和使用信息技術(shù)的意識(shí);養(yǎng)成科學(xué)的學(xué)習(xí)態(tài)度,不迷信書本、不迷信權(quán)威。
三、教學(xué)重難點(diǎn)
教學(xué)重點(diǎn):對(duì)分查找的基本方法及注意事項(xiàng);
教學(xué)難點(diǎn):對(duì)分查找算法的實(shí)現(xiàn)。
四、教學(xué)策略
·以“猜數(shù)”游戲?qū)?,引入?duì)分查找的概念;
·師生討論、生生討論、生生互助;分析、歸納、總結(jié),理解并掌握對(duì)分查找的基本思想;
·采用分類研究、分享成果、課后練習(xí)等學(xué)習(xí)方法,理解對(duì)分查找方法及基本主要特征;
·采用自然評(píng)價(jià)、師生評(píng)價(jià)、生生評(píng)價(jià)等形式對(duì)學(xué)習(xí)進(jìn)行過程性評(píng)價(jià)。
五、教學(xué)過程
1.游戲激趣,釋疑對(duì)分查找
(三個(gè)程序圖片)
(初始界面)(人工猜數(shù)界面)(程序猜數(shù)界面)
準(zhǔn)備:幾張白紙,一支記號(hào)筆。啟動(dòng)猜數(shù)程序。
師:同學(xué)們好!大家看到前面的程序了嗎?它是一個(gè)什么程序呢?
同學(xué):猜數(shù)游戲程序。
師:對(duì),這是我用VB針對(duì)李泳主持的“幸運(yùn)52”中猜商品價(jià)格環(huán)節(jié)開發(fā)的一款程序,我先來說說針對(duì)主持人的部分:當(dāng)李泳宣布商品的價(jià)格范圍時(shí),比如10000元內(nèi),猜商品價(jià)格的人就可以在猜數(shù)范圍欄起始欄填上“0”,終至欄填“10000”,然后再將鼠標(biāo)移到猜數(shù)欄中單擊,程序即提示:“準(zhǔn)備!倒計(jì)時(shí)30秒”,當(dāng)單擊提示處,猜價(jià)格倒計(jì)時(shí)開始,猜價(jià)格人即可在猜數(shù)欄上填上所猜價(jià)格的數(shù)值,然后根據(jù)主持人的提示,選擇“不對(duì)”重新填寫商品價(jià)格或選擇“正確”讓所猜價(jià)格在“猜得結(jié)果”欄內(nèi)顯示正確結(jié)果并停止計(jì)時(shí),提示欄中即顯示“您猜了M次,對(duì)了,恭喜您”。
師:大家覺得程序光有這樣的功能神奇嗎?
生:不神奇。
師:對(duì),我也是這樣認(rèn)為的。這個(gè)程序神奇的地方在它能幫助猜商品價(jià)格人在規(guī)定的時(shí)間內(nèi),根據(jù)主持人的提示準(zhǔn)確地猜出商品的價(jià)格,而且猜中率100%,所以現(xiàn)在“幸運(yùn)52”停播了,大家知道為什么嗎?
生:不知道。
師:就是因?yàn)槲议_發(fā)了這個(gè)程序呀!
生:(有的說信,有的抱著懷疑的態(tài)度不吭聲,也有說不信的)
師:有同學(xué)愿意上來試試嗎?
師:你在紙上寫下你的數(shù)值范圍和要猜的數(shù),然后給大家看一下,別說出來,別讓電腦聽見了。
師:好,操作程序讓程序幫忙把寫的數(shù)找出來。
(程序找到正確的數(shù))
師:神奇吧。
師:還有那位同學(xué)愿意試一下。
師:同樣,你還是先寫下要猜的數(shù)和范圍100~200,這次我們不讓大家看到他要猜的數(shù),請(qǐng)大家?guī)兔τ浵鲁绦蛎看纬霈F(xiàn)的數(shù)字。
師:電腦程序也猜出了正確結(jié)果:132。
程序給出的數(shù)字是:
第一個(gè)數(shù)是:150
第二個(gè)數(shù)是:12
5第三個(gè)數(shù)是:137
第四個(gè)數(shù)是:1
31第五個(gè)數(shù)是:13
4最后是:13
2大家能看出什么規(guī)律了嗎?
生:看不出
師:?jiǎn)渭儚倪@幾個(gè)數(shù)當(dāng)中是看不出什么規(guī)律,現(xiàn)在我們依次把這些數(shù)放到數(shù)軸上,再看一下,大家看能找出什么規(guī)律呢?
同學(xué)發(fā)言??
師:大家認(rèn)為他說的怎樣?為什么不鼓掌呀!
師:對(duì),正如剛才的同學(xué)說的那樣,程序是在給定范圍內(nèi)依次找中點(diǎn)方法來找到我們要找的最終數(shù)值,這就是我們今天要討論的一種新的查找方法:對(duì)分查找。
師:我們剛才的游戲中的數(shù)列是序的嗎?
生:是有序的,升序排列的。
師:如果是降序能用對(duì)分查找方式查找嗎?
生:能。
師:大家想一想,如果我們打亂數(shù)據(jù)的排序順序,在沒有排序的數(shù)列中能否用對(duì)分查找的方法,找到我們想找到的數(shù)據(jù)?
同學(xué):不能。
師:對(duì),這就是對(duì)分查找方法的一個(gè)特征,或稱為條件。因?yàn)槲覀兪歉鶕?jù)數(shù)據(jù)的大小找到它在數(shù)列中的位置。
【設(shè)計(jì)意圖】通過游戲和對(duì)程序給出數(shù)值在數(shù)軸上的分布分析,讓學(xué)生初步理解和掌握對(duì)分查找的方法及前提條件,為后一階段對(duì)分查找算法的實(shí)現(xiàn)作好鋪墊。
2.分析實(shí)例,實(shí)現(xiàn)對(duì)分查找算法
師:下面我們一起來看一下程序是怎樣一步一步的給出以上數(shù)據(jù)并最終找到“132”這個(gè)數(shù)的。
師:首先在100至200之間找中點(diǎn),然后再用中點(diǎn)值150與所要找的數(shù)132比較,得出的結(jié)論是所要找的數(shù)在100至150之間的數(shù),一下數(shù)值的范圍就縮小了一半,終止變量j的值就由200變成了150;第二次查找時(shí),程序就給出100至150的中點(diǎn)值125;當(dāng)程序進(jìn)行第三次查找時(shí),起始變量i的值就被修改為125,它們的中點(diǎn)值應(yīng)該是:(125+150)/2=137.5。有小數(shù)了,怎么辦?
生:??(有點(diǎn)茫然)
師:對(duì)于小數(shù),程序可以繼續(xù)查找,但有可能要增加查找次數(shù)。為了保證在整數(shù)范圍內(nèi)查找,我們就要對(duì)含小數(shù)的中間值進(jìn)行處理:取整。大家還記得我們學(xué)過VB的取整函數(shù)嗎?
生:int。
師:對(duì)。即int(137.5),結(jié)果是多少?
生:137。
師:所以我們查找i到j(luò)范圍內(nèi)的中點(diǎn)值的表達(dá)式應(yīng)該為:m=int((i+j)/2)。
師:依次類推,程序會(huì)依次給出131、134、132即找到了要找的數(shù)。
師:請(qǐng)同學(xué)們根據(jù)算法逐步求精的原則在下面畫出流程圖。
(展示如下流程圖,然后請(qǐng)同學(xué)完成完善對(duì)分查找的算法流程圖)
流程圖補(bǔ)充完善后的結(jié)果:
【設(shè)計(jì)意圖】通過對(duì)程序給出中間數(shù)的分析,幫助學(xué)生理解對(duì)分查找算法實(shí)現(xiàn)的方法,為學(xué)生順利完成對(duì)分查找算法流程圖給予理論與實(shí)踐上的支持。
3.推出特例,完善對(duì)分查找算法
師:同學(xué)們,剛才我們完成的對(duì)分查找的流程圖;下面請(qǐng)同學(xué)們用剛才的查找方法分析一下在199至200范圍內(nèi)要找200這個(gè)數(shù),能找到嗎?為什么?如何解決這個(gè)問題?
(將教室內(nèi)學(xué)生按座位分成若干組,進(jìn)行討論。每個(gè)組推選一名小 組長(zhǎng),完成后作小組發(fā)言)
??
(每一小組完成發(fā)言后,老師或點(diǎn)評(píng),或讓學(xué)生點(diǎn)評(píng))
師:根據(jù)剛才同學(xué)的討論分析,那我們先前給出的流程圖就有了一些缺陷,怎么修改?
(在同學(xué)們的發(fā)言聲中,修改完善流程圖)
修改后的流程圖如下:
【設(shè)計(jì)意圖】給出特例,讓學(xué)生相互討論、互助學(xué)習(xí),歸納總結(jié)出上述流程圖中出現(xiàn)問題的癥結(jié)所在,并給出正確的流程圖;由此可讓學(xué)生體驗(yàn)到科學(xué)探究的方法,從而培養(yǎng)學(xué)生的科學(xué)態(tài)度與探索精神。
六、課后作業(yè)
師:1.在前面的取整中我們用了取整函數(shù)int,大家想一想能不能用四舍五入函數(shù)處理?如果用四舍五入函數(shù)(round)處理,流程圖又將怎樣修改?
2.請(qǐng)看教材P40-43,比較我們所給出的流程圖與教材上的流程圖有什么差異??jī)蓚€(gè)流程圖最后結(jié)果是否一致,那個(gè)流程圖的結(jié)果有問題,問題是怎么造成的?請(qǐng)寫出一篇500—800字的小論文。
(提示:認(rèn)真閱讀教材P40至P43內(nèi)容,并分析教材中所給算法的邏輯錯(cuò)誤)
作業(yè)提交方式:電子郵件(校內(nèi)、校外均可)
郵件名稱:登分號(hào)+姓名+論文題目
作業(yè)提交地址:bdxyz@qq.com
【設(shè)計(jì)意圖】作業(yè)(1)擴(kuò)充課堂內(nèi)容,豐富學(xué)生知識(shí)面,豐富學(xué)生分別學(xué)習(xí)內(nèi)容;作業(yè)(2)通過兩個(gè)流程圖之間差異性比較,引導(dǎo)學(xué)生判別書本上所給出流程圖的邏輯錯(cuò)誤,從而培養(yǎng)學(xué)生:1.科學(xué)的學(xué)習(xí)態(tài)度和精神,不迷信教材、不迷信權(quán)威;2.運(yùn)用論文等形式來表達(dá)自己觀點(diǎn);3.通過學(xué)生自己的分析、探索,找出教材中的錯(cuò)誤。
七、教學(xué)反思
整節(jié)課充滿了笑聲和掌聲,課堂氣氛活躍,學(xué)生參與度高。老師的主導(dǎo)作用和學(xué)生的主體地位得到了充分的體現(xiàn)。學(xué)生在師生互動(dòng)、生生討論、生生互助中比較好地掌握了對(duì)分查找的思想和算法實(shí)現(xiàn),教學(xué)效果好。但由于時(shí)間關(guān)系,沒有將程序的源代碼展示給學(xué)生,讓學(xué)生有一種意猶未盡的感覺是本次課的一個(gè)缺憾。
第二篇:對(duì)分查找算法教案
對(duì)分查找算法教案
一、設(shè)計(jì)思想
對(duì)分查找是計(jì)算機(jī)科學(xué)中的一個(gè)基礎(chǔ)算法。對(duì)于一個(gè)基礎(chǔ)算法的學(xué)習(xí),同樣可以讓學(xué)生在一定的情境下,經(jīng)歷分析問題、確定算法、編程求解等用計(jì)算機(jī)解決問題的基本過程。本堂課以一個(gè)游戲暖場(chǎng),同時(shí)激活學(xué)生的思維,引導(dǎo)學(xué)生去探索游戲或生活背后的科學(xué)原理。為了讓學(xué)生在教師的引導(dǎo)下能自我解析算法的形成過程,本課分解了問題動(dòng)作,找出問題的全部可能情況,在對(duì)全部可能情況總結(jié)歸納的情況下,得出對(duì)分查找的基礎(chǔ)算法,最后在程序中得到實(shí)現(xiàn),從而使學(xué)生建立起對(duì)分查找算法形成的科學(xué)邏輯結(jié)構(gòu)。
二、教材分析
本課的課程標(biāo)準(zhǔn)內(nèi)容:
(一)計(jì)算機(jī)解決問題的基本過程(1)結(jié)合實(shí)例,經(jīng)歷分析問題、確定算法、編程求解等用計(jì)算機(jī)解決問題的基本過程,認(rèn)識(shí)算法和程序設(shè)計(jì)在其中的地位和作用。
(三)算法與問題解決例舉 C 查找、排序與問題解決
(2)通過實(shí)例,掌握使用數(shù)據(jù)查找算法設(shè)計(jì)程序解決問題的方法。本課的《學(xué)科教學(xué)指導(dǎo)意見》內(nèi)容:基本要求:1.初步掌握對(duì)分查找算法。2.初步掌握對(duì)分查找算法的程序?qū)崿F(xiàn)。
教材內(nèi)容:第二章 算法實(shí)例 2.4.3對(duì)分查找和第五章5.4查找算法的程序?qū)崿F(xiàn),課題定為對(duì)分查找算法及程序?qū)崿F(xiàn),安排兩個(gè)課時(shí),第一課時(shí)著重是對(duì)分查找算法的形成和初步程序?qū)崿F(xiàn),第二課時(shí)利用對(duì)分查找算法解決一些實(shí)際問題的程序?qū)崿F(xiàn),本教學(xué)設(shè)計(jì)為第一課時(shí)。
從《課程標(biāo)準(zhǔn)》和《學(xué)科教學(xué)指導(dǎo)意見》對(duì)本課教學(xué)內(nèi)容的要求來看,要求學(xué)生能從問題出發(fā),通過相應(yīng)的科學(xué)步驟形成對(duì)分查找的算法。對(duì)學(xué)生來說,要求通過這一課時(shí)的學(xué)習(xí)能初步掌握或了解對(duì)分查找的前提條件、解決問題的對(duì)象,明確對(duì)分查找算法結(jié)構(gòu)和對(duì)分查找的意義。
三、學(xué)情分析
學(xué)生應(yīng)該已經(jīng)掌握程序設(shè)計(jì)的基本思想,掌握賦值語(yǔ)句、選擇語(yǔ)句、循環(huán)語(yǔ)句的基本用法和VB基本操作,這節(jié)課學(xué)生可能會(huì)遇到的最大問題是:如何歸納總結(jié)對(duì)分查找解決不同情況問題的一般規(guī)律,鑒于此,在教學(xué)中要積極引導(dǎo)學(xué)生采取分解動(dòng)作、比較遷移等學(xué)習(xí)策略。(說明:由于這個(gè)課是算法與程序設(shè)計(jì)課,對(duì)學(xué)生有一定的要求,學(xué)生至少應(yīng)該熟悉算法的基本概念,掌握順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),天津的學(xué)生雖然學(xué)的是Java,但是在算法這一塊上都是相通的,如果對(duì)算法流程,三種基本結(jié)構(gòu)原理和語(yǔ)句如果都掌握的話,理解這個(gè)課應(yīng)該沒什么大的問題,VB只是一個(gè)程序?qū)崿F(xiàn)的工具。但如果學(xué)生沒有較好的算法基礎(chǔ),沒有前續(xù)的知識(shí)作輔墊,這節(jié)課會(huì)比較困難,教師就要靈活處理。)
四、教學(xué)目標(biāo)
知識(shí)與技能:理解對(duì)分查找的概念和特點(diǎn),通過分步解析獲取對(duì)分查找的解題結(jié)構(gòu),初步掌握對(duì)分查找算法的程序?qū)崿F(xiàn)。
過程與方法:通過分析多種不同的可能情況,逐步歸納對(duì)分查找的基本思想和方法,確定解題步驟。
情感態(tài)度與價(jià)值觀:通過實(shí)踐體驗(yàn)科學(xué)解題的重要性,增強(qiáng)效率意識(shí)和全局觀念,感受對(duì)分查找算法的魅力,養(yǎng)成始終堅(jiān)持、不斷積累才能獲得成功的意志品質(zhì)。
五、重點(diǎn)難點(diǎn)
教學(xué)重點(diǎn)和難點(diǎn):分解并理解對(duì)分查找的過程。
六、教學(xué)策略與手段
1、教學(xué)線索:游戲引領(lǐng)---提出對(duì)分查找原理---解析對(duì)分查找的算法特征---實(shí)踐解決問題。
2、學(xué)習(xí)線索:分解問題---歸納問題---實(shí)踐提升,在三個(gè)階段的不斷推進(jìn)中明確對(duì)分查找算法,總結(jié)規(guī)律。
七、教學(xué)過程
1、新課導(dǎo)入
(1)熱身:游戲(2分鐘)教師展示一件特色物品,讓一個(gè)學(xué)生來猜這個(gè)物品的價(jià)格,其他學(xué)生只需要根據(jù)這個(gè)學(xué)生猜出的價(jià)格提示“高了”或是“低了”,如果學(xué)生能在約定次數(shù)內(nèi)猜對(duì)這個(gè)物品的價(jià)格,就把這件物品“贈(zèng)送”給他……。
(2)討論:你覺得怎么樣猜可以猜的快一點(diǎn)呢?有什么技巧嗎?你從這個(gè)游戲當(dāng)中得到什么啟示?(2分鐘)
(3)教師引導(dǎo):這個(gè)世界不是缺少問題,而是缺少發(fā)現(xiàn),其實(shí)在這個(gè)游戲的背后,含有一個(gè)非常經(jīng)典的算法。引出對(duì)分查找的的概念。(1分鐘)
2、新課:
教學(xué)步驟一:分析對(duì)分查找的原理和方法。(3分鐘)
(1)對(duì)分查找是效率很高的查找方法,但被查找的數(shù)據(jù)必須是有序的。
(2)首先將查找的數(shù)與有序數(shù)組內(nèi)處于中間位置的數(shù)據(jù)比較,如果中間位置上的數(shù)與查找的數(shù)不同,根據(jù)有序性,就可確定應(yīng)該在數(shù)組的前半部分還是后半部分繼續(xù)查找。
(3)在新確定的范圍內(nèi),繼續(xù)按上述方法進(jìn)行查找,直到獲得最終結(jié)果。
教學(xué)步驟二:分解查找過程中可能出現(xiàn)的所有情況。(第一種情況5分鐘)
以規(guī)模為10的升序數(shù)組d為例:用一個(gè)數(shù)組d(1 to 10)來存放序列,用i表示查找范圍的第一個(gè)數(shù)組元素的下標(biāo),j表示最后一個(gè)數(shù)組元素的下標(biāo),mid表示中間位置元素的下標(biāo)。(1)
第一種情況:要找的值在后半部分;
以查找鍵KEY=48為例分析
第一次查找::
范圍d(1)~d(10),mid= └(1+10)/2┘, d(mid) 所以可以確定接下來要找的范圍是后半部分。 比較后i=mid+1 第二次查找: 范圍d(6)~d(10),mid= └(6+10)/2┘,d(mid) 所以可以確定接下來要找的范圍是后半部分。 比較后:i=mid+1 第三次比較: 范圍d(9)~d(10),mid= └(9+10)/ ┘2,d(mid)=Key,找到了。 思考:如果要找的是52? i,j,mid分別是多少? 總結(jié)一: 如果d(mid) 教學(xué)步驟三:繼續(xù)分解對(duì)分查找算法中包含的其他情況。(9分鐘) 討論:兩人為一合作小組,分別畫出key=17和key=20的查找示意圖,并用共同的智慧討論并回答以下兩個(gè)問題。 問題1:當(dāng)d(mid)>key時(shí),新查找的范圍在哪里?i和j如何變化? 問題2:在什么情況下查找會(huì)結(jié)束?繼續(xù)進(jìn)行重復(fù)查找的條件是什么? (2) 第二種情況:要找的值在前半部分; 以查找鍵KEY=17為例分析: (3)第三種情況:要找的值找不到;以查找鍵KEY=20為例分析: 總結(jié)二:如果d(mid)>key ,新查找范圍為上半部分, i值不變,j=mid-1。 總結(jié)三:(1)找到了查找會(huì)結(jié)束;(2)在i<=j時(shí)重復(fù)查找,如果還是找不到,查找也會(huì)結(jié)束。 教學(xué)步驟四:對(duì)各種情況進(jìn)行歸納總結(jié)。(2分鐘) (1)Key與d(mid)的大小比較影響i,j的取值的規(guī)律: i的取值規(guī)律:if d(mid) j的取值規(guī)律:if d(mid)>key then j=mid-1,用分支結(jié)構(gòu)實(shí)現(xiàn)。 (2)繼續(xù)進(jìn)行重復(fù)查找的條件: i≤j,用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)。 教學(xué)步驟五:用流程圖來描述對(duì)分查找算法(3分鐘) 教學(xué)步驟六:對(duì)分查找算法的初步程序?qū)崿F(xiàn)。(9分鐘) 教師事先設(shè)計(jì)好VB窗體,學(xué)生只需在相應(yīng)的程序體輸入代表算法思想的關(guān)鍵語(yǔ)句。 附主要程序體: Private Sub Command2_Click() Dim key As Integer, mid As Integer, i As Integer, j As Integer key = Val(Text1.Text)i = 1: j = 10 Do While ____(1)_______ mid =(i + j)2 If d(mid)= key Then Text2.Text = “找到了,是第” & mid & “個(gè)” Exit Sub End If If _____(2)_______ Then _____(3)_______ Else _____(4)_______ End If Loop Text2.Text = “對(duì)不起,找不到!” End Sub 教學(xué)步驟七:評(píng)價(jià)。(4分鐘) 用過程反饋表評(píng)價(jià)學(xué)生的程序?qū)崿F(xiàn)情況,學(xué)有余力的同學(xué)可以進(jìn)一步討論或?qū)嵺`問題:如果是降序序列,該怎么樣改動(dòng)程序?如果序列元素不是10個(gè),而是100個(gè)或更多呢? 教學(xué)步驟八:盤點(diǎn)對(duì)分查找法的核心內(nèi)容,總結(jié)提升。(3分鐘)(1)采用對(duì)分查找的前提是數(shù)據(jù)序列必須是有序。 (2)由于對(duì)分查找過程中的每次比較都能使得搜索空間減半,對(duì)分查找將不會(huì)使用超過┌l(fā)og2(n+1)┐次來找到目標(biāo)值。 (3)提升對(duì)分查找算法的實(shí)際意義:同學(xué)們可能還沒有意識(shí)到對(duì)分查找是多么高效,那不妨設(shè)想一下在一個(gè)有一百萬(wàn)個(gè)人名的電話簿中找一個(gè)名字,對(duì)分查找可以讓你不超過21次就能找到指定的名字。如果你能夠?qū)⑹澜缟纤械娜税凑招彰判?,那么你?5次內(nèi)就能找到任何人。 教學(xué)步驟十:總結(jié)本課的科學(xué)解題過程。(2分鐘) 八、作業(yè): 以下的三組元素序列能采用對(duì)分查找法來查找嗎? (1)7,22,25,35,44,61,88,99,100 (2)22,46,77,89,67,99,33,20,98 (3)87,75,58,44,23,11,7,2,0,-8,-10 2、設(shè)計(jì)一個(gè)能用對(duì)分查找算法思想解決的實(shí)際問題,用自然語(yǔ)言描述即可,為下節(jié)課作準(zhǔn)備。 《3.4算法及其實(shí)現(xiàn)》教學(xué)設(shè)計(jì)(第一課時(shí)) 一、設(shè)計(jì)思想 隨著新課程改革的深入,信息技術(shù)課程理念發(fā)生了巨大的變化,具體表現(xiàn)為:強(qiáng)調(diào)培養(yǎng)學(xué)生的信息素養(yǎng);為學(xué)生打造終身學(xué)習(xí)的平臺(tái);關(guān)照全體學(xué)生的發(fā)展;強(qiáng)調(diào)培養(yǎng)學(xué)生解決問題的能力,運(yùn)用信息技術(shù)創(chuàng)新實(shí)踐的能力,與人交流合作的能力。新課程要求教師必須改變傳統(tǒng)的“教教材”,要 “用教材去教”,要求教學(xué)模式由以往的“以教師為主體”轉(zhuǎn)變到“以學(xué)生為主體”,提倡“任務(wù)型”教學(xué),關(guān)注學(xué)生的情感態(tài)度價(jià)值觀。 本節(jié)課我根據(jù)新課標(biāo),結(jié)合學(xué)生的特點(diǎn)對(duì)教材的內(nèi)容進(jìn)行了深入的挖掘和思考,創(chuàng)作了學(xué)生學(xué)案,創(chuàng)設(shè)豐富的教學(xué)情境,提供多樣的學(xué)習(xí)資源。教學(xué)以生活中的實(shí)際問題和有趣故事作為任務(wù)驅(qū)動(dòng),讓學(xué)生采用自主、合作、探究、體驗(yàn)等學(xué)習(xí)方式,通過意義建構(gòu)獲得新知,充分體現(xiàn)學(xué)生的主體地位。 二、教材分析 《算法及其實(shí)現(xiàn)》是普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書——《信息技術(shù)基礎(chǔ)(浙江教育出版社)》的第三章第四節(jié)內(nèi)容,該教材是按照高中信息技術(shù)課程標(biāo)準(zhǔn)編寫的實(shí)驗(yàn)教材。通過學(xué)習(xí)本節(jié)內(nèi)容可以達(dá)到“初步掌握用計(jì)算機(jī)進(jìn)行信息處理的幾種基本方法,認(rèn)識(shí)其工作過程與基本特征”的課程標(biāo)準(zhǔn)要求。 本節(jié)內(nèi)容是第三章的難點(diǎn),介紹了算法的基本概念和算法的表示方法。相比較前三節(jié)的內(nèi)容要抽象的多,二本節(jié)又是第四節(jié)的第一課時(shí),是第二課時(shí)《程序設(shè)計(jì)實(shí)例》的知識(shí)基礎(chǔ),起到承上啟下的作用。本節(jié)的學(xué)習(xí)重點(diǎn)是算法的概念、特點(diǎn)及表示方法;難點(diǎn)是用流程圖描述算法。 三、學(xué)情分析 從思維品質(zhì)上來說:高一學(xué)生已有使用計(jì)算機(jī)的感性經(jīng)驗(yàn),已經(jīng)可以 超越簡(jiǎn)單的技術(shù)操作,具備了接受更高層面文化的能力。學(xué)生的思維能力已接近成人,他們有旺盛的求知欲,較高的學(xué)習(xí)自覺性,并具備一定的自學(xué)能力,已具有較強(qiáng)抽象思維和邏輯推理能力。 從知識(shí)儲(chǔ)備上來說:經(jīng)過前面的學(xué)習(xí),學(xué)生已經(jīng)可以使用計(jì)算機(jī)處理一些實(shí)際問題,例如:利用計(jì)算機(jī)對(duì)文字、圖片、多媒體信息的處理,但是學(xué)生還不了解了使用計(jì)算機(jī)解決問題的一般過程和解決方法,以及以何種方式來表示。 四、教學(xué)目標(biāo) (一)、知識(shí)與技能: 1、理解算法的含義; 2、了解算法的特點(diǎn)及表示方法; 3、學(xué)會(huì)用流程圖表示算法。 (二)、過程與方法: 1、能初步利用算法解決簡(jiǎn)單的問題; 2、培養(yǎng)學(xué)生的理論聯(lián)系實(shí)際能力和動(dòng)手操作能力。 (三)、情感態(tài)度與價(jià)值觀: 1、培養(yǎng)學(xué)生學(xué)習(xí)信息技術(shù)課程的興趣; 2、培養(yǎng)學(xué)生主動(dòng)探究和合作學(xué)習(xí)的意識(shí)和能力。 五、重點(diǎn)難點(diǎn) 教學(xué)重點(diǎn):算法的含義、及表示方法 教學(xué)難點(diǎn):用流程圖描述算法 六、教學(xué)策略與方法 1、學(xué)案導(dǎo)學(xué),自主學(xué)習(xí) 2、問題導(dǎo)入,激情引趣。 3、創(chuàng)設(shè)情境,任務(wù)驅(qū)動(dòng)。 4、合作探究,交流提高。 七、課前準(zhǔn)備 1.教材、教材配套的教師用書、配套光盤 2.學(xué)生學(xué)案 3.教學(xué)課件 4、多媒體教室/大屏幕投影儀 5、將學(xué)生分為4人一組,每組都有優(yōu)、中、差三個(gè)不同層次的學(xué)生。 八、教學(xué)過程 (一)新課導(dǎo)入 同學(xué)們,上節(jié)課我們講了聲音和視頻處理,都是要利用計(jì)算機(jī)內(nèi)存儲(chǔ)的應(yīng)用軟件來解決處理問題,同樣,像我們之前學(xué)習(xí)的文字處理軟件、表格處理軟件、多媒體報(bào)告處理軟件也都是已經(jīng)編制好的軟件幫助我們處理信息。 但是,也有許多問題是沒有現(xiàn)成的軟件可以借用的,因此,我們必須根據(jù)不同的問題和工作要求,設(shè)計(jì)針對(duì)特定問題的解題步驟,編制專用的軟件來解決這些問題。 今天開始我們一起來看看如何實(shí)際編寫一個(gè)簡(jiǎn)單的程序來解決一個(gè)特定的問題。 (二)新課教學(xué) 1、算法 (1)師生共同完成游戲 師:首先,我們一起來做一個(gè)農(nóng)夫過河的游戲(游戲內(nèi)容分別用文字和flash動(dòng)畫顯示在屏幕上),請(qǐng)同學(xué)們按小組討論,幫農(nóng)夫設(shè)計(jì)一個(gè)具體的步驟,安全地將這三樣?xùn)|西帶過河。 生:分組討論過河的方案,最終得出了成功的方案。 師:讓小組代表與全班同學(xué)分享各自的方案,評(píng)價(jià)各組的方案進(jìn)而得出正確的步驟并總結(jié): 同學(xué)們,這6個(gè)步驟是這個(gè)游戲中是不可缺少的動(dòng)作,否則就不能完成總體目標(biāo),使問題獲得圓滿解決。因此,在解決某一問題時(shí)我們要把各個(gè)步驟都精確的考慮到。 上面這個(gè)例子中的解決問題的步驟其實(shí)就是編制程序的基礎(chǔ):算法。設(shè)計(jì)意圖:游戲激發(fā)學(xué)生的興趣,讓學(xué)生在完成游戲中已經(jīng)編出了一個(gè)解決問題的算法,讓學(xué)生輕松進(jìn)入新知識(shí)的學(xué)習(xí)。 (2)學(xué)生閱讀,完成學(xué)案 師:現(xiàn)在請(qǐng)大家閱讀課本3.4.1第一二自然段,完成學(xué)案1、2、3題。學(xué)生:閱讀課本制定內(nèi)容,完成學(xué)案。 學(xué)生完成學(xué)案時(shí),教師要走進(jìn)學(xué)生,觀察學(xué)生的完成情況。完成后,學(xué)生要對(duì)學(xué)案的完成做簡(jiǎn)要展示,教師要對(duì)學(xué)生的完成情況作簡(jiǎn)要總結(jié)。 師:大家完成的都很好,請(qǐng)同學(xué)們告訴我有那些生活中算法的實(shí)例呢? 生:回答(多樣) 師:大家說的都很好,樂譜、菜譜、廣播體操圖解、搬家的次序等等都是生活中的算法,就拿“搬家”來說,是不是設(shè)計(jì)的次序不一樣,搬家的效果就不一樣呢?也就是說,解決同一個(gè)問題,會(huì)有很多種不同的算法,那么什么樣的算法更好一點(diǎn)呢? 現(xiàn)在請(qǐng)大家閱讀課本3.4.1剩余部分,完成學(xué)案4題。學(xué)生完成學(xué)案時(shí)教師引導(dǎo): 師:方法甲和其他兩個(gè)方案比較優(yōu)秀在哪里?節(jié)省了什么? 我們?cè)谠O(shè)計(jì)算法時(shí)應(yīng)如何做呢? 生:回答 設(shè)計(jì)意圖:以學(xué)案的形式給學(xué)生一個(gè)一個(gè)的任務(wù),讓學(xué)生自己去嘗試、探究,然后在教師的指導(dǎo)下進(jìn)行小結(jié),接下來再嘗試,這樣就形成螺旋式的知識(shí)學(xué)習(xí)和能力提高過程。學(xué)生的主動(dòng)和教師的主導(dǎo)都得到充分的發(fā)揮。在本節(jié)課的教學(xué)設(shè)計(jì)中,教師重視的不應(yīng)該是結(jié)果,而是過程。 2、算法的表示 (1)常見算法的表示形式 師:大家已經(jīng)知道我們可以編寫算法來解決生活中的問題,那么我們可以用什么形式來表示算法呢?請(qǐng)大家閱讀課本3.4.2第1自然段,完成學(xué)案5題。 完成后要挑選學(xué)生回答。(2)流程圖 師:通過大家的閱讀和總結(jié),流程圖是形象直觀,便于掌握的描述算法的形式,因此我們需要認(rèn)真學(xué)習(xí)如何用流程圖描述算法,現(xiàn)在請(qǐng)大家閱讀課本3.4.2中2、3、4自然段,完成學(xué)案第6題。 生:完成學(xué)案第6題。(3)用流程圖描述算法 師:我們已經(jīng)知道了流程圖的功能,現(xiàn)在我們就嘗試著用流程圖來表示算法,需要注意的是在用流程圖描述算法之前必須能能夠用自然語(yǔ)言描述算法,否則也無法用流程圖來描述。 操作一:將大象裝冰箱 操作一由老師講解演示,學(xué)生聽講。 操作二:學(xué)校上體育課,一般在操場(chǎng)上課,遇到下雨或下雪,改到室內(nèi)上課,用流程圖表示。 操作二由學(xué)生獨(dú)立完成。 生:聽老師講解完操作一之后,完成學(xué)案的第7、8題。 操作三:對(duì)任意輸入的三個(gè)整數(shù)x,y和z,找出并輸出其中的最大值。 操作三老師講解。 師:操作三用自然語(yǔ)言描述: 1.輸入變量x,y,z 2.比較x,y。如果x>y,則x存入以max命名的存儲(chǔ)單元中;否則,y存入max 3.比較z和max。如果z>max,則將z存入max。4.輸出max。用流程圖描述: 課堂練習(xí):對(duì)任意輸入的三個(gè)整數(shù)x,y和z,找出并輸出其中的最小值。用流程圖表示。 聽老師講解后,完成學(xué)案第9、10題。 設(shè)計(jì)意圖:本環(huán)節(jié)設(shè)計(jì)是充分調(diào)動(dòng)學(xué)生的積極性和主動(dòng)性。教學(xué)中不斷的給學(xué)生新的任務(wù),讓學(xué)生主動(dòng)學(xué)習(xí),增強(qiáng)技能,在練習(xí)設(shè)計(jì)中注意難度的梯度,讓學(xué)生不斷的戰(zhàn)勝困難,而不是一下就被困難嚇倒。最后,通過不斷的練習(xí),讓學(xué)生真正掌握知識(shí)和技能。 (三)課堂小結(jié) 本節(jié)課學(xué)習(xí)了算法的定義、特征、優(yōu)化和算法的表示方式,并著重學(xué)習(xí)了如何用流程圖表示算法。請(qǐng)同學(xué)們?cè)谡n后完成學(xué)案第11、12題,并在小組之間交流。 九、課后作業(yè) 1、完成教材P71頁(yè)上的“練一練”中的第(1)、(2)兩題。 2、觀察猜數(shù)字游戲,嘗試畫出猜數(shù)字游戲算法的流程圖。 設(shè)計(jì)意圖:課后作業(yè)分為課內(nèi)作業(yè)和課外拓展兩部分,讓不同層次的學(xué)生分別完成。課外拓展部分的算法比較復(fù)雜,涉及到了循環(huán)結(jié)構(gòu),可讓學(xué)生在完成思索的過程中預(yù)習(xí)第二課時(shí)的內(nèi)容。 十、學(xué)生學(xué)案(另附) 【問題研討】 1、信息技術(shù)教育,采用任務(wù)驅(qū)動(dòng)的形式,圍繞一個(gè)能激起學(xué)生濃厚興趣的主題展開教學(xué),以學(xué)生的探究過程作為學(xué)習(xí)載體,較之與傳統(tǒng)的信息技術(shù)課教學(xué),以單純的計(jì)算機(jī)知識(shí)和計(jì)算機(jī)操作作為教學(xué)內(nèi)容,更能激發(fā)學(xué)生強(qiáng)烈的學(xué)習(xí)欲望。 2、采用學(xué)案導(dǎo)學(xué)的方式,學(xué)生手中都有學(xué)案,方便了學(xué)習(xí),梳理了思路,提高了效率,更主要的是真正實(shí)現(xiàn)了學(xué)生主動(dòng)學(xué)習(xí),教師只是引導(dǎo)的教學(xué)模式,更加貼近新課程改革的要求。 3、以小組協(xié)作學(xué)習(xí)方式展開教學(xué),使學(xué)生的知識(shí)、技能的獲取變成了多渠道。學(xué)生相互之間的只言片語(yǔ),遠(yuǎn)勝于教師長(zhǎng)篇大論的講解和繁瑣的演示操作,大大提高學(xué)生的學(xué)習(xí)效率和學(xué)習(xí)興趣。同時(shí)高、中、低不同層次的學(xué)生組成小組,充分利用優(yōu)秀學(xué)生資源,進(jìn)行同伴互助,縮小生生間的差距,改變兩極分化的現(xiàn)狀。同時(shí)也減少教師的課堂工作量,避免了很多學(xué)生同時(shí)提問教師忙不過來的尷尬局面。 4、自主探究的學(xué)習(xí)方式,要求學(xué)生具有一定的知識(shí)準(zhǔn)備,并不適合于所有內(nèi)容的教學(xué)。當(dāng)學(xué)生對(duì)所要學(xué)習(xí)的知識(shí)毫無所知時(shí),讓學(xué)生去自主探究要花費(fèi)很多的時(shí)間和精力,大大降低了學(xué)生的學(xué)習(xí)效率,由于受課時(shí)限制應(yīng)有選擇的采用。 《算法及其實(shí)現(xiàn)》教學(xué)設(shè)計(jì) XXXXX中學(xué) XXX 一、教材分析 在前面的章節(jié)已經(jīng)提到,用計(jì)算機(jī)解決實(shí)際問題的過程中,有兩個(gè)重要的環(huán)節(jié)——設(shè)計(jì)算法、編制和運(yùn)行程序?qū)崿F(xiàn)算法,所以算法是學(xué)習(xí)程序設(shè)計(jì)的前提和依據(jù)。算法是理論知識(shí),具有一定的抽象性,學(xué)生理解起來比較困難,為了不讓學(xué)生害怕后面程序的學(xué)習(xí),在選擇例子的時(shí)候降低了難度,都是貼近學(xué)生生活易于理解的例子。上好本章的第一節(jié),對(duì)學(xué)生學(xué)習(xí)算法和編程興趣的影響十分重要。 二、學(xué)情分析 該課程的學(xué)習(xí)者是高中一年級(jí)的學(xué)生,這個(gè)階段的學(xué)生已具有接受抽象事物的能力、同時(shí)邏輯思維、好奇心強(qiáng),對(duì)新鮮事物和新理念、新知識(shí)興趣濃厚,但是怕吃苦,遇到難題,易退縮。雖然通過初中信息技術(shù)課程的學(xué)習(xí),掌握了一定的利用計(jì)算機(jī)解決問題的知識(shí),然而大多數(shù)的同學(xué)對(duì)算法還是比較陌生的?;谶@樣的情況,在教學(xué)中,要盡量的把抽象的問題具體話,和生活中的事例緊密聯(lián)系,化難為易,學(xué)以致用,激發(fā)學(xué)生的學(xué)習(xí)興趣和動(dòng)機(jī),使同學(xué)們?cè)诳鞓分袑W(xué)習(xí)算法及程序設(shè)計(jì)。 三、教學(xué)媒體 a)b)多媒體網(wǎng)絡(luò)教室 教材、教學(xué)幻燈片、圖片。 四、教學(xué)方法 主要以任務(wù)驅(qū)動(dòng)法、小組討論為主,講授為輔。充分調(diào)動(dòng)學(xué)生的主觀能動(dòng)性,已達(dá)到主動(dòng)式學(xué)習(xí)、探究性學(xué)習(xí)和創(chuàng)新性學(xué)習(xí)。 五、教學(xué)目標(biāo) 1、知識(shí)目標(biāo) (1)理解算法的含義,能從生活中準(zhǔn)確舉例說明使用算法的例子; (2)了解算法的表示形式,有自然語(yǔ)言、偽代碼、流程圖;(3)掌握用流程圖描述算法的方法。 2、技能目標(biāo) (1)培養(yǎng)學(xué)生分析、解決問題的能力;(2)會(huì)用流程圖描述算法,解決問題。 3、情感目標(biāo) (1)讓學(xué)生明白解決任何問題有應(yīng)具有清晰地思路和步驟; (2)通過對(duì)算法的設(shè)計(jì),提高學(xué)生對(duì)算法的興趣,培養(yǎng)學(xué)生的邏輯思維能力。 重點(diǎn):1.如何分析問題、設(shè)計(jì)算法。2.流程圖的畫法。 難點(diǎn):1.如何分析問題、設(shè)計(jì)算法。2.流程圖的畫法。 六、教學(xué)流程 (一)情景導(dǎo)入,引入新課(5分鐘) 【教師活動(dòng)】 (1)教師提出一個(gè)有趣的問題:一個(gè)農(nóng)夫帶著一條狼、一頭山羊和一籃蔬菜要過河,但只有一條小船.乘船時(shí),農(nóng)夫只能帶一樣?xùn)|西.當(dāng)農(nóng)夫在場(chǎng)的時(shí)候,這三樣?xùn)|西相安無事.一旦農(nóng)夫不在,狼會(huì)吃羊,羊會(huì)吃菜。 (2)要求學(xué)生分組討論設(shè)計(jì)一個(gè)方案,使農(nóng)夫能安全地將這三樣?xùn)|西帶過河.。 【學(xué)生活動(dòng)】 (1)學(xué)生積極思考討論問題。(2)派小組代表發(fā)表解決方案。 【教師活動(dòng)】 (1)口述總結(jié)學(xué)生提出的方案 第一步,農(nóng)夫帶羊過河.第二步,農(nóng)夫獨(dú)自回來.第三步,農(nóng)夫帶狼過河.第四步,農(nóng)夫帶羊回來.第五步,農(nóng)夫帶蔬菜過河.第六步,農(nóng)夫獨(dú)自回來.第七步,農(nóng)夫帶羊過河 當(dāng)然,也有可能學(xué)生會(huì)提出第二種方案: 第一步,農(nóng)夫帶羊過河.第二步, 農(nóng)夫獨(dú)自回來.第三步,農(nóng)夫帶蔬菜過河.第四步,農(nóng)夫帶羊回來.第五步,農(nóng)夫帶狼過河.第六步,農(nóng)夫獨(dú)自回來.第七步,農(nóng)夫帶羊過河.設(shè)計(jì)意圖:通過這個(gè)有趣的問題,在學(xué)生的討論中已無形的接觸到算法,讓同學(xué)對(duì)算法有一個(gè)初步的了解。 (二)循序漸進(jìn),引出算法(8分鐘) 【 教師活動(dòng)】 教師簡(jiǎn)單介紹算法的定義,即“算法”就是是解決方法的精確描述。從廣義的角度來看,生活中到處存在著算法,樂譜是樂隊(duì)演奏的算法,菜譜是廚師做菜的算法,廣播操圖解是廣播體操的算法。 (2)讓同學(xué)談?wù)勆钪?,你還遇到什么樣的算法。【學(xué)生活動(dòng)】 (1)認(rèn)真聽講,做好筆記(2)積極發(fā)言。 設(shè)計(jì)意圖:為了使抽象的知識(shí)更加具體化,聯(lián)系生活中的實(shí)例,讓學(xué)生從生活中發(fā)現(xiàn)知識(shí),易于理解后面的知識(shí)。 (三)逐步深入,突破重、難點(diǎn)(15分鐘)【 教師活動(dòng)】 (1)教師講述算法的表現(xiàn)形式——自然語(yǔ)言、偽代碼、流程圖。(2)結(jié)合PPT,講述流程中常用的幾種符號(hào)。 ? 處理框(矩形框),表示一般的處理功能。 ? 判斷框(菱形框),表示對(duì)一個(gè)給定的條件進(jìn)行判斷,根據(jù)給定的條件是否成立決定如何執(zhí)行其后的操作。它有一個(gè)入口,二個(gè)出口。 ? 輸入輸出框(平行四邊形框)。 ? 起止框(圓弧形框),表示流程開始或結(jié)束。 ? 連接點(diǎn)(圓圈),用于將畫在不同地方的流程線連接起來。如圖中有兩個(gè)以1標(biāo)志的連接點(diǎn)(在連接點(diǎn)圈中寫上“l(fā)”)則表示這兩個(gè)點(diǎn)是連接在一起的,相當(dāng)于一個(gè)點(diǎn)一樣。用連接點(diǎn),可以避免流程線的交叉或過長(zhǎng),使流程圖清晰。 ? 流程線(指向線),表示流程的路徑和方向。 ? 注釋框, 是為了對(duì)流程圖中某些框的操作做必要的補(bǔ)充說明,以幫助閱讀流程圖的人更好地理解流程圖的作用。它不是流程圖中必要的部分,不反映流程和操作。 (3)引導(dǎo)學(xué)生看課件中學(xué)校上體育課的流程圖。【 學(xué)生活動(dòng)】 (1)認(rèn)真聽課,了解算法的表現(xiàn)形式。(2)了解流程圖的畫法。 設(shè)計(jì)意圖:這部分的知識(shí)是本堂課的重點(diǎn)和難點(diǎn),讓學(xué)生自主學(xué)習(xí)課本,掌握知識(shí),提高學(xué)生的總結(jié)、歸納、表達(dá)對(duì)于他們的學(xué)習(xí)很重要。 (四)層層展開、鞏固新知識(shí)(8分鐘) 【教師活動(dòng)】 (1)引導(dǎo)學(xué)生思考課件中提出的問題(2)教師分析課件中的流程圖得出最終結(jié)果 【學(xué)生活動(dòng)】 (1)積極討論思考,回答教師的提問。 設(shè)計(jì)意圖:通過練習(xí),鞏固學(xué)生對(duì)新知識(shí)的掌握,同時(shí)通過學(xué)生的回答,老師對(duì)學(xué)生知識(shí)的掌握情況有所了解。 (五)課堂總結(jié)(3分鐘)【教師活動(dòng)】 (1)老師以提問的方式,什么是算法,算法的表現(xiàn)形式,自然語(yǔ)言和流程圖的對(duì)比。 【學(xué)生活動(dòng)】 (1)積極回答教師的提問,回顧本節(jié)的知識(shí)點(diǎn)。設(shè)計(jì)意圖:進(jìn)一步鞏固加深學(xué)生對(duì)本堂課知識(shí)的理解。 (六)布置課后作業(yè)(1分鐘)【 教師活動(dòng)】 給出三個(gè)數(shù)a、b、c,請(qǐng)問如何判斷出最大數(shù)?并畫出流程圖 【學(xué)生活動(dòng)】(1)課后認(rèn)真完成。 設(shè)計(jì)意圖:進(jìn)一步鞏固學(xué)生對(duì)知識(shí)的理解。 五種查找算法總結(jié) 一、順序查找 條件:無序或有序隊(duì)列。 原理:按順序比較每個(gè)元素,直到找到關(guān)鍵字為止。 時(shí)間復(fù)雜度:O(n)二、二分查找(折半查找) 條件:有序數(shù)組 原理:查找過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜素過程結(jié)束; 如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。 如果在某一步驟數(shù)組為空,則代表找不到。 這種搜索算法每一次比較都使搜索范圍縮小一半。 時(shí)間復(fù)雜度:O(logn)三、二叉排序樹查找 條件:先創(chuàng)建二叉排序樹: 1.若它的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值; 2.若它的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值; 3.它的左、右子樹也分別為二叉排序樹。 原理: 在二叉查找樹b中查找x的過程為: 1.若b是空樹,則搜索失敗,否則: 2.若x等于b的根節(jié)點(diǎn)的數(shù)據(jù)域之值,則查找成功;否則: 3.若x小于b的根節(jié)點(diǎn)的數(shù)據(jù)域之值,則搜索左子樹;否則: 4.查找右子樹。 時(shí)間復(fù)雜度: 四、哈希表法(散列表) 條件:先創(chuàng)建哈希表(散列表) 原理:根據(jù)鍵值方式(Key value)進(jìn)行查找,通過散列函數(shù),定位數(shù)據(jù)元素。 時(shí)間復(fù)雜度:幾乎是O(1),取決于產(chǎn)生沖突的多少。 五、分塊查找 原理:將n個(gè)數(shù)據(jù)元素“按塊有序”劃分為m塊(m ≤ n)。 每一塊中的結(jié)點(diǎn)不必有序,但塊與塊之間必須“按塊有序”;即第1塊中任一元素的關(guān)鍵字都必須小于第2塊中任一元素的關(guān)鍵字; 而第2塊中任一元素又都必須小于第3塊中的任一元素,……。 然后使用二分查找及順序查找。第三篇:算法及其實(shí)現(xiàn) 教學(xué)設(shè)計(jì)(第一課時(shí))
第四篇:算法及其實(shí)現(xiàn)教學(xué)設(shè)計(jì)
第五篇:五種查找算法總結(jié)