




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三單元查找算法夯實(shí)考點(diǎn)考點(diǎn)1順序查找1.查找算法所謂查找就是在指定的數(shù)據(jù)中尋找某一特定的數(shù)據(jù)。查找結(jié)果有兩種,找到(查找成功)和未找到(查找失敗)。2.順序查找的基本思想從第一個(gè)數(shù)據(jù)開(kāi)始,從左往右(或從上到下)將數(shù)據(jù)按順序逐個(gè)與給定的關(guān)鍵字進(jìn)行比較,若某個(gè)數(shù)據(jù)和給定的關(guān)鍵字相等,則查找成功,找到并輸出第一個(gè)與關(guān)鍵字相等的數(shù)據(jù)的位置;反之,查找失敗。若有n個(gè)數(shù),則可能的最多查找次數(shù)為n。3.順序查找算法基本框架假設(shè):要查找的數(shù)為key,待查找的數(shù)存放在數(shù)組d中。For語(yǔ)句框架:
Fori=1ton若d(i)=key,則表示找到,做相應(yīng)處理
Nexti若i>n表示未找到DoWhile語(yǔ)句框架:
i=1
Dowhilei<=n若d(i)=key,則表示找到,做相應(yīng)處理
i=i+1
Loop若i>n表示未找到4.順序查找的程序?qū)崿F(xiàn)在n個(gè)數(shù)組元素中依次查找,找到第1個(gè)滿(mǎn)足條件的值,查找即結(jié)束,輸出找到元素所在的位置;若找不到,輸出“未找到”。程序?qū)崿F(xiàn):設(shè):(1)要查找的數(shù)據(jù)是key(在文本框Text1中輸入),查找的數(shù)據(jù)存放在數(shù)組d中。(2)pos為找到數(shù)的位置,pos=0表示未找到。(3)p記錄查找的次數(shù)。key=Val(Text1.Text)
'Val要根據(jù)實(shí)際情況決定是否要添加
p=0
pos=0
find=False
'find=False表示未找到,find=True表示找到
i=1
DoWhilei<=nAndfind=False
'表示還沒(méi)找完并且還未找到,則繼續(xù)查找,notfind也可表示為find=False
p=p+1
Ifkey=d(i)Then
pos=i
find=True
EndIf
i=i+1
Loop
IffindThen'也可表示為Iffind=TrueThen
Text2.Text="在d("+Str(pos)+")中"
Else
Text2.Text="未找到"
EndIf典例1
某查找算法的部分VB代碼如下:t=Falsei=0DoWhilei<7Andt=False
i=i+1
Ifa(i)=keyThent=TrueLoopIft=FalseTheni=0數(shù)組元素a(1)到a(7)的數(shù)據(jù)依次為“3,5,1,5,8,9,5”,當(dāng)變量key值為5時(shí),運(yùn)用該算法處理后,變量i的值是(
)A.0 B.2 C.4 D.7解析:本題主要考查的是順序查找的實(shí)現(xiàn)過(guò)程。本程序的功能是查找數(shù)組中第一個(gè)與目標(biāo)數(shù)據(jù)相等的數(shù),若找到將其在數(shù)組中的位置賦給變量i,結(jié)束查找;若找不到,變量i=0。因?yàn)槟繕?biāo)值key=5,它和數(shù)組中第二個(gè)數(shù)正好相等,因此i=2。答案:B典例2編寫(xiě)一個(gè)VB程序,實(shí)現(xiàn)如下功能:在列表框List1中顯示十個(gè)字符串,十個(gè)字符串存放在數(shù)組s中,在文本框Text1中輸入一個(gè)字符串,單擊“統(tǒng)計(jì)”按鈕,統(tǒng)計(jì)字符串出現(xiàn)的次數(shù),若出現(xiàn)次數(shù)大于0,則在文本框Text2中顯示實(shí)際次數(shù),若出現(xiàn)次數(shù)為0,則在文本框Text2中顯示“找不到”。程序運(yùn)行效果如圖3-1所示。為實(shí)現(xiàn)上述功能,請(qǐng)?jiān)诔绦騽澗€處填入合適的語(yǔ)句:程序①處語(yǔ)句為
;
程序②處語(yǔ)句為
;
程序③處語(yǔ)句為
。
解析:要查找的字符為st,st通過(guò)文本框Text1中輸入得到,因此①處語(yǔ)句為T(mén)ext1.Text;將要查找的字符串按順序與數(shù)組s中元素比較,如果相等,則進(jìn)行計(jì)數(shù),因此②處語(yǔ)句為s(i)=st;根據(jù)題目“若出現(xiàn)次數(shù)大于0,則在文本框Text2中顯示實(shí)際次數(shù),若出現(xiàn)次數(shù)為0,則在文本框Text2中顯示“找不到”。可知③處的語(yǔ)句為num>0或num<>0。答案:①Text1.Text②s(i)=st③num>0或num<>0典例3
某6位學(xué)生的學(xué)號(hào)存儲(chǔ)在數(shù)組元素a(1)到a(6)中,其數(shù)據(jù)依次為“2015001,2015003,2015078,2015010,2015788,2015666”。使用順序查找算法查找學(xué)號(hào)2015700,則共需查找次數(shù)為(
)A.0 B.5 C.6 D.7解析:本題考查的是順序查找算法的實(shí)現(xiàn)過(guò)程。由于給定的數(shù)組中沒(méi)有數(shù)據(jù)2015700,因此需要與數(shù)組中每個(gè)數(shù)進(jìn)行比較,因此共需查找次數(shù)為6次。答案:C考點(diǎn)2對(duì)分查找1.對(duì)分查找的基本思想在有序的數(shù)據(jù)序列中(一般存放在數(shù)組中),首先把要查找的數(shù)據(jù)與數(shù)組中間位置的元素進(jìn)行比較,如果相等,則查找成功并退出查找;否則,根據(jù)數(shù)組元素的有序性,確定數(shù)據(jù)應(yīng)在數(shù)組的前半部分還是在后半部分查找;在確定了新的查找范圍后,重復(fù)進(jìn)行以上比較,直到找到或未找到為止。【重難點(diǎn)剖析】①對(duì)分查找的前提是被查找的數(shù)據(jù)序列必須是有序。②“未找到”是指當(dāng)指定范圍內(nèi)的起點(diǎn)大于終點(diǎn)仍未找到該數(shù)據(jù)。2.對(duì)分查找算法基本框架說(shuō)明:要查找的數(shù)為key,待查找的數(shù)存放在數(shù)組d中。
i為查找范圍的起點(diǎn),j為查找范圍的終點(diǎn),m為范圍[i,j]的中間位置。
i=1
j=n
DoWhilei<=j計(jì)算中點(diǎn)位置m比較key與d(m),并做相應(yīng)處理
Loop若i>j,則表示未找到3.對(duì)分查找程序?qū)崿F(xiàn)在n個(gè)數(shù)組元素中依次查找,找到第1個(gè)滿(mǎn)足條件的值,查找就結(jié)束,輸出找到元素所在的位置;若找不到,輸出“未找到”。程序?qū)崿F(xiàn):設(shè)要查找的數(shù)據(jù)是key(在文本框Text1中輸入),查找的數(shù)據(jù)存放在數(shù)組d中。在文本框Text2中輸出查找結(jié)果,若找到輸出“找到!位置為:X”,否則輸出“未找到!”在文本框Text3中輸出共查找的次數(shù)。p表示查找的次數(shù)。核心代碼為(以升序?yàn)槔?:key=Val(Text1.Text)
′表示要查找的數(shù)
p=0
′表示查找的次數(shù)
find=False
′查找的結(jié)果,若find=True表示找到,find=False表示未找到
i=1
′查找范圍的起點(diǎn)
j=n
′查找范圍的終點(diǎn)
DoWhilei<=jAndNotfind
′如果還未找完并且未找到
p=p+1
′查找次數(shù)計(jì)數(shù)
m=(i+j)/2
′計(jì)算中點(diǎn)位置m
Ifkey=d(m)Then
′表示找到的情況
find=True
Text2.Text="找到!位置為:"+Str(m)
EndIf
Ifkey>d(m)Then
′表示查找的數(shù)比中間位置上的數(shù)大時(shí)
i=m+1
Else
′表示查找的數(shù)比中間位置上的數(shù)小時(shí)
j=m-1
EndIfLoop
IfNotfindThenText2.Text="未找到!"Text3.Text="共查找的次數(shù)為:"+Str(p)【重難點(diǎn)剖析】計(jì)算中點(diǎn)位置的語(yǔ)句還可以寫(xiě)成:m=Int((i+j)/2)或m=Fix((i+j)/2)。典例4(2015浙江省10月選考題)已知單調(diào)函數(shù)在[0,1]區(qū)間存在一個(gè)x0,使f(x0)=0?,F(xiàn)用對(duì)分查找算法搜索x0的值,開(kāi)始搜索區(qū)間為[0,1],若經(jīng)過(guò)10次對(duì)分查找后還需繼續(xù)搜索,則第11次搜索區(qū)間的長(zhǎng)度為(
)A.1/2 B.1/10 C.1/102 D.1/210解析:本題主要考查的是對(duì)分查找算法。在[0,1]區(qū)間內(nèi)查找一個(gè)數(shù),第一次取[0,1]區(qū)間中間值0.5,如果f(0.5)<0,則第二次區(qū)間為[0.5,1],如果f(0.5)>0,則第二次區(qū)間為[0,0.5],每次都減少為原來(lái)的1/2,所以答案為D。答案:D典例5a數(shù)組(a(1)~a(8))中存儲(chǔ)了8本圖書(shū)的價(jià)格,其數(shù)據(jù)依次為“105,98,95,60,55,35,12,8”?,F(xiàn)使用對(duì)分查找數(shù)據(jù)8,需要查找的次數(shù)是(
)A.1 B.2 C.3 D.4解析:本題主要考查的是對(duì)分查找算法的實(shí)現(xiàn)過(guò)程。根據(jù)計(jì)算公式m=(i+j)/2可知,第一次訪問(wèn)的數(shù)據(jù)為60(第4個(gè)),第二次訪問(wèn)的數(shù)據(jù)為35(第6個(gè)),第三次訪問(wèn)的數(shù)據(jù)為12(第7個(gè)),第四次訪問(wèn)的數(shù)據(jù)為8(第8個(gè)),因此答案為D。答案:D典例6某數(shù)組有10個(gè)數(shù)據(jù),依次為1,2,3,4,5,6,7,8,9,10,現(xiàn)要查找某一數(shù)據(jù),若使用對(duì)分查找目標(biāo)數(shù)據(jù),需查找兩次,若用順序查找需查找8次,則要查找的目標(biāo)數(shù)據(jù)為(
)A.2 B.3 C.7 D.8解析:本題考查的是兩種查找算法。根據(jù)順序查找次數(shù)即可判定目標(biāo)數(shù)據(jù)為8,我們?cè)儆脤?duì)分查找進(jìn)行驗(yàn)證,第一次查找的位置是m=(1+10)/2=5,第二次查找的位置是m=(6+10)/2=8,第8個(gè)位置上的數(shù)就是8,因此答案為D。答案:D典例7小明編寫(xiě)了一個(gè)學(xué)生IC卡余額查詢(xún)系統(tǒng),其功能是在文本框Text1中輸入學(xué)生的IC卡號(hào),單擊“查詢(xún)余額”按鈕Command1后,在標(biāo)簽Label3中輸出查找結(jié)果。程序運(yùn)行效果如圖3-2所示。程序說(shuō)明:(1)學(xué)生的IC卡號(hào)保存在數(shù)組card中,并已按升序排序好;卡中金額保存在數(shù)組money中。例:第i個(gè)學(xué)生的卡號(hào)保存在card(i)中,其對(duì)應(yīng)的金額保存在money(i)中。(2)如果在數(shù)據(jù)庫(kù)中找到此卡號(hào),則在標(biāo)簽Label3中顯示“此卡號(hào)余額為”及對(duì)應(yīng)的余額,如果未找到則顯示“查無(wú)此號(hào)!”。(3)程序運(yùn)行,將在左邊列表框List1中顯示學(xué)生的卡號(hào)和金額。解決此問(wèn)題的部分程序段如下:Constn=1500
′設(shè)共有n張卡Dimcard(1Ton)AsLongDimmoney(1Ton)AsSinglePrivateSubForm_Load()
′此過(guò)程用于輸入卡號(hào)及金額,并存儲(chǔ)在數(shù)組card和money中代碼略EndSubPrivateSubCommand1_Click()DimxAsLong,iAsLong,jAsLong,mAsLong,findAsBooleanx=Val(Text1.Text)i=1
①
find=False
DoWhile②
m=(i+j)/2
Ifx=card(m)Then
③
ElseIfx<card(m)Then
j=m-1
Else
i=m+1
EndIfLoopIffind=TrueThen
Label3.Caption="此卡號(hào)余額為"+④+"元"
Else
Label3.Caption="查無(wú)此號(hào)!"
EndIfEndSub(1)解決此問(wèn)題的算法是
。(選填:對(duì)分查找或順序查找)
(2)在程序①,②,③,④劃線處填入適當(dāng)?shù)恼Z(yǔ)句或表達(dá)式,將程序補(bǔ)充完整:程序中①劃線處應(yīng)填入
。
程序中②劃線處應(yīng)填入
。
程序中③劃線處應(yīng)填入
。
程序中④劃線處應(yīng)填入
。
解析:本題考查的是對(duì)分查找算法的程序?qū)崿F(xiàn)。對(duì)分查找的關(guān)鍵在于確定每次查找的范圍,程序用變量i,j表示查找的范圍,根據(jù)劃線①處前面的語(yǔ)句可以確定①處的語(yǔ)句應(yīng)表示首次查找范圍的終點(diǎn),即j=n;劃線②處的語(yǔ)句表示查找的條件,如果還沒(méi)找完并且還
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小熊與大樹(shù)的對(duì)話童話作文(13篇)
- 個(gè)人成長(zhǎng)潛能呈現(xiàn)承諾書(shū)6篇范文
- 公司出口商品質(zhì)量保障承諾書(shū)(7篇)
- 2025南平市延平區(qū)疾病預(yù)防控制中心招聘駕駛員模擬試卷及參考答案詳解一套
- 尊貴藝術(shù)珍品保真購(gòu)藏承諾函(9篇)
- 2025年煙臺(tái)市公費(fèi)醫(yī)學(xué)生考試選聘(139人)考前自測(cè)高頻考點(diǎn)模擬試題帶答案詳解
- 企業(yè)資產(chǎn)采購(gòu)標(biāo)準(zhǔn)合同范本
- 商業(yè)計(jì)劃書(shū)制作流程工具
- 2025內(nèi)蒙古鄂爾多斯市康巴什區(qū)青年就業(yè)見(jiàn)習(xí)計(jì)劃招募考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(全優(yōu))
- 遼寧省葫蘆島市2024-2025學(xué)年高一下學(xué)期期末考試地理地理試卷(解析版)
- 數(shù)據(jù)庫(kù)版本管理手冊(cè)
- 2024年河南鄭州高新區(qū)招聘社區(qū)工作人員筆試真題
- 財(cái)務(wù)部門(mén)增值稅發(fā)票管理操作手冊(cè)
- 2025年交管12123版學(xué)法減分全部試題及答案解析
- 完整版消防應(yīng)急預(yù)案范本三篇
- 算力經(jīng)濟(jì)發(fā)展研究報(bào)告(2025年)
- 互聯(lián)網(wǎng)醫(yī)院醫(yī)療健康服務(wù)模式創(chuàng)新與推廣方案
- 出口貿(mào)易安全培訓(xùn)制度課件
- 加強(qiáng)送餐安全培訓(xùn)課件
- GB/T 18268.21-2025測(cè)量、控制和實(shí)驗(yàn)室用的電設(shè)備電磁兼容性要求第21部分:特殊要求無(wú)電磁兼容防護(hù)場(chǎng)合用敏感性試驗(yàn)和測(cè)量設(shè)備的試驗(yàn)配置、工作條件和性能判據(jù)
- 人教PEP版(2024)2025-2026學(xué)年英語(yǔ)四年級(jí)上學(xué)期期中測(cè)試卷(含答案)
評(píng)論
0/150
提交評(píng)論