資源描述:
《順序查找算法及程序?qū)崿F(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、查找算法之算法實現(xiàn)查找是一種查詢數(shù)據(jù)的技術(shù),其目標(biāo)是能以比較少的步聚和較短的時間找到所需的對象順序查找的基本思想是從第一個數(shù)據(jù)開始,按數(shù)據(jù)的順序逐個將數(shù)據(jù)與給定的值進(jìn)行比較。若某個數(shù)據(jù)和給定的值相等,則查找成功,找到所查數(shù)據(jù)的位置;反之,查找不成功。查找算法順序查找27363218d(1)d(2)d(3)d(4)輸入查找的元素值key=32i=1i=2i=3此時d(i)=key,數(shù)組中的第3個位置如果輸入查找的元素值key=22i=1i=2i=3i=4i=527363218d(1)d(2)d(3)d(4)此時i等于5,超過數(shù)組中元素個數(shù),
2、找不到從數(shù)組d的第1個元素d(1)開始,依次判斷各元素的值是否與查找鍵key的值相等。順序查找的流程圖開始i1d(i)=key?i<=n?i i+1未找到,輸出結(jié)果:0找到,輸出結(jié)果:i結(jié)束YNYN例題:順序查找1、首先在通用聲明事件里定義數(shù)組d變量為全局變量。Dimd(1To10)AsIntegerDimi,keyAsInteger2、程序一運行,生成10個3位整數(shù),顯示在標(biāo)簽1中。PrivateSubForm_Load()Label1.Caption=""RandomizeFori=1To10d(i)=Int(Rnd*101+100)
3、Label1.Caption=Label1.Caption&d(i)&""NextiEndSub3、在文本框1中輸入要找的數(shù),單擊“順序查找”按鈕,在文本框2中顯示找到的結(jié)果。PrivateSubCommand1_Click()key=Val(Text1.Text)num=10Fori=1TonumIfd(i)=keyThenText2.Text=“在數(shù)組的”+Str(i)+位置中"ExitForEndIfNextiIfi=num+1ThenText2.Text=“在數(shù)組中沒有找到"+Str(key)EndIfEndSub某學(xué)校把每個學(xué)生
4、的姓名和家長聯(lián)系電話保存到計算機(jī)中,以便遇到緊急情況時可以及時通知學(xué)生家長。每個學(xué)生的姓名和家長聯(lián)系電話已經(jīng)保存在數(shù)組xm和phone(都為字符串類型)中?,F(xiàn)在要設(shè)計一個根據(jù)輸入的學(xué)生姓名查詢該學(xué)生家長的聯(lián)系電話的程序。程序運行時的界面如下圖所示:完善程序:下列程序運行時,在Text1中輸入學(xué)生姓名,單擊“查詢家長電話”按鈕Command1后,在標(biāo)簽Label2中顯示對應(yīng)的學(xué)生家長電話,若找不到則顯示“未找到該學(xué)生”。程序代碼如下:Dimxm(1To1000)AsStringDimphone(1To1000)AsStringDimnasi
5、ntegern=1000PrivateSubCommand1_Click()DimxAsStringDimfindAsBooleanDimiAsIntegerx=Text1.Texti=0find=FalseDoWhile(i6、組賦初值語句,忽略EndSub請閱讀代碼并問答下列問題。(1)解決此問題的算法是_______________________。在程序①和②劃線處填入適當(dāng)?shù)恼Z句或表達(dá)式,將程序補(bǔ)充完整:(2)程序中①劃線處應(yīng)填入_____________________。(3)程序中②劃線處應(yīng)填入_____________________。注:該示例程序在素材文件夾下vb33文件夾中。順序查找算法i=i+1x=xm(i)比較順序查找是一種基本、簡單的查找算法,但查找的效率往往過低;對分查找時每次都把查找范圍縮小一半對分查找算法數(shù)據(jù)次數(shù)較少,效率較高,但它
7、要求數(shù)組中的數(shù)據(jù)是有序的。順序查找與對分查找比較是否需要事先排序平均查找次數(shù)順序查找不需要(n+1)/2多對分查找需要Log2n少