版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ù)開始,從左往右(或從上到下)將數(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語句框架:
Fori=1ton若d(i)=key,則表示找到,做相應(yīng)處理
Nexti若i>n表示未找到DoWhile語句框架:
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è)滿足條件的值,查找即結(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
'表示還沒找完并且還未找到,則繼續(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)過程。本程序的功能是查找數(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編寫一個(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)诔绦騽澗€處填入合適的語句:程序①處語句為
;
程序②處語句為
;
程序③處語句為
。
解析:要查找的字符為st,st通過文本框Text1中輸入得到,因此①處語句為Text1.Text;將要查找的字符串按順序與數(shù)組s中元素比較,如果相等,則進(jìn)行計(jì)數(shù),因此②處語句為s(i)=st;根據(jù)題目“若出現(xiàn)次數(shù)大于0,則在文本框Text2中顯示實(shí)際次數(shù),若出現(xiàn)次數(shù)為0,則在文本框Text2中顯示“找不到”??芍厶幍恼Z句為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)過程。由于給定的數(shù)組中沒有數(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)行以上比較,直到找到或未找到為止?!局仉y點(diǎn)剖析】①對(duì)分查找的前提是被查找的數(shù)據(jù)序列必須是有序。②“未找到”是指當(dāng)指定范圍內(nèi)的起點(diǎn)大于終點(diǎn)仍未找到該數(shù)據(jù)。2.對(duì)分查找算法基本框架說明:要查找的數(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è)滿足條件的值,查找就結(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)位置的語句還可以寫成:m=Int((i+j)/2)或m=Fix((i+j)/2)。典例4(2015浙江省10月選考題)已知單調(diào)函數(shù)在[0,1]區(qū)間存在一個(gè)x0,使f(x0)=0。現(xiàn)用對(duì)分查找算法搜索x0的值,開始搜索區(qū)間為[0,1],若經(jīng)過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],每次都減少為原來的1/2,所以答案為D。答案:D典例5a數(shù)組(a(1)~a(8))中存儲(chǔ)了8本圖書的價(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)過程。根據(jù)計(jì)算公式m=(i+j)/2可知,第一次訪問的數(shù)據(jù)為60(第4個(gè)),第二次訪問的數(shù)據(jù)為35(第6個(gè)),第三次訪問的數(shù)據(jù)為12(第7個(gè)),第四次訪問的數(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小明編寫了一個(gè)學(xué)生IC卡余額查詢系統(tǒng),其功能是在文本框Text1中輸入學(xué)生的IC卡號(hào),單擊“查詢余額”按鈕Command1后,在標(biāo)簽Label3中輸出查找結(jié)果。程序運(yùn)行效果如圖3-2所示。程序說明:(1)學(xué)生的IC卡號(hào)保存在數(shù)組card中,并已按升序排序好;卡中金額保存在數(shù)組money中。例:第i個(gè)學(xué)生的卡號(hào)保存在card(i)中,其對(duì)應(yīng)的金額保存在money(i)中。(2)如果在數(shù)據(jù)庫中找到此卡號(hào),則在標(biāo)簽Label3中顯示“此卡號(hào)余額為”及對(duì)應(yīng)的余額,如果未找到則顯示“查無此號(hào)!”。(3)程序運(yùn)行,將在左邊列表框List1中顯示學(xué)生的卡號(hào)和金額。解決此問題的部分程序段如下:Constn=1500
′設(shè)共有n張卡Dimcard(1Ton)AsLongDimmoney(1Ton)AsSinglePrivateSubForm_Load()
′此過程用于輸入卡號(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="查無此號(hào)!"
EndIfEndSub(1)解決此問題的算法是
。(選填:對(duì)分查找或順序查找)
(2)在程序①,②,③,④劃線處填入適當(dāng)?shù)恼Z句或表達(dá)式,將程序補(bǔ)充完整:程序中①劃線處應(yīng)填入
。
程序中②劃線處應(yīng)填入
。
程序中③劃線處應(yīng)填入
。
程序中④劃線處應(yīng)填入
。
解析:本題考查的是對(duì)分查找算法的程序?qū)崿F(xiàn)。對(duì)分查找的關(guān)鍵在于確定每次查找的范圍,程序用變量i,j表示查找的范圍,根據(jù)劃線①處前面的語句可以確定①處的語句應(yīng)表示首次查找范圍的終點(diǎn),即j=n;劃線②處的語句表示查找的條件,如果還沒找完并且還
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工聘用協(xié)議書2023
- 個(gè)人租房的合同協(xié)議書范本10篇
- 再婚離婚協(xié)議書2025年
- 重癥肌無力樣綜合征病因介紹
- T-CIECCPA 011-2024 高雜貴金屬冶煉渣資源化處理技術(shù)規(guī)范
- 中考?xì)v史復(fù)習(xí)第一部分教材知識(shí)速查模塊2中國(guó)近代史第1講列強(qiáng)的侵略與中國(guó)人民的抗?fàn)幑_課一等獎(jiǎng)省
- (2024)汽車內(nèi)飾用品項(xiàng)目可行性研究報(bào)告寫作范本(一)
- 2023年金屬門窗及類似制品項(xiàng)目融資計(jì)劃書
- 2023年紡織產(chǎn)品項(xiàng)目籌資方案
- 《開環(huán)伯德圖的繪制》課件
- 電氣專業(yè)述職報(bào)告
- 腰椎病的中醫(yī)護(hù)理查房
- 2024年湖南省公務(wù)員考試《行測(cè)》真題及答案解析
- 成都錦城學(xué)院《操作系統(tǒng)與nux管理》2022-2023學(xué)年期末試卷
- 《弧弦圓心角》說課稿課件
- 中職班級(jí)建設(shè)三年規(guī)劃方案
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 2024年中級(jí)安全工程師《(建筑施工)安全生產(chǎn)專業(yè)實(shí)務(wù)》考試題庫(含答案)
- 弘揚(yáng)抗戰(zhàn)精神課程設(shè)計(jì)
- 康復(fù)護(hù)理完整版
- 制氫技術(shù)與工藝 課件 第7章 氨制氫
評(píng)論
0/150
提交評(píng)論