版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4孑科技大學(xué)課程名稱(chēng):數(shù)據(jù)結(jié)構(gòu)與算法學(xué)生姓名:學(xué)號(hào):點(diǎn)名序號(hào):指導(dǎo)教師:實(shí)驗(yàn)地點(diǎn):基礎(chǔ)實(shí)驗(yàn)大樓實(shí)驗(yàn)時(shí)間:5月20日2023—2023?2學(xué)期信息與軟件工程學(xué)院實(shí)驗(yàn)報(bào)告(二)學(xué)生姓名學(xué)號(hào):指導(dǎo)教師:實(shí)驗(yàn)地點(diǎn):基礎(chǔ)實(shí)驗(yàn)大樓實(shí)驗(yàn)時(shí)間:5月20日一、實(shí)驗(yàn)室名稱(chēng):軟件實(shí)驗(yàn)室二、實(shí)驗(yàn)項(xiàng)目名稱(chēng):數(shù)據(jù)結(jié)構(gòu)與算法一排序與查找三、實(shí)驗(yàn)學(xué)時(shí):4四、實(shí)驗(yàn)原理:快速排序的基本思想是:通過(guò)一躺排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比此外一不部分的所有數(shù)據(jù)都要小,然后再按次方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)成整個(gè)數(shù)據(jù)變成有序序列。假設(shè)要排序的數(shù)組是A[l]……A[N],一方面任意選取一個(gè)數(shù)據(jù)(通常選用第一個(gè)數(shù)據(jù))作為關(guān)健數(shù)據(jù),然后將所有比它的數(shù)都放到它前面,所有比它大的數(shù)都放到它后面,這個(gè)過(guò)程稱(chēng)為一躺快速排序。一躺快速排序的算法是:1)設(shè)立兩個(gè)變量I、J,排序開(kāi)始的時(shí)候I:=l,J:=N2)以第一個(gè)數(shù)組元素作為關(guān)鍵數(shù)據(jù),賦值給X,即X:=AJ];3)從J開(kāi)始向前搜索,BP(J:=J-1),找到第一個(gè)小于X的值,兩者互換;4)從I開(kāi)始向后搜索,即(I:=1+1),找到第一個(gè)大于X的值,兩者互換;5)反復(fù)第3、4步,直到I=J。二分法查找(折半查找)的基本思想:(1)擬定該區(qū)間的中點(diǎn)位置:mid=(1ow+high)/2min代表區(qū)間中間的結(jié)點(diǎn)的位置,low代表區(qū)間最左結(jié)點(diǎn)位置,high代表區(qū)間最右結(jié)點(diǎn)位置(2)將待查a值與結(jié)點(diǎn)mid的關(guān)鍵字(下面用R[mid].key)比較,若相等,則查找成功,否則擬定新的查找區(qū)間:A)假如R[mid].key>a,則由表的有序性可知,R[mid].key右側(cè)的值都大于a,所以等于a的關(guān)鍵字假如存在,必然在R[mid].key左邊的表中,這時(shí)high=mid—1;B)假如R[mid].keyva,則等「a的關(guān)鍵字假如存在,必然在R[mid].key右邊的表中。這時(shí)1ow=mid;C)假如R[mid].key=a,則查找成功。(3)下一次查找針對(duì)新的查找區(qū)間,反復(fù)環(huán)節(jié)(1)和(2)(4)在查找過(guò)程中,low逐步增長(zhǎng),high逐步減少,假如highvlow,則查找失敗。五、實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)通過(guò)實(shí)現(xiàn)快速排序和折半查找算法,使學(xué)生理解如何實(shí)現(xiàn)快速查找和排序的基本算法思想。通過(guò)練習(xí),加強(qiáng)對(duì)算法的理解,提高編程能力。六、實(shí)驗(yàn)內(nèi)容:(1)實(shí)現(xiàn)數(shù)據(jù)序列的輸入;(2)實(shí)現(xiàn)快速排序算法,并對(duì)輸入的序列排序后輸出;(3)實(shí)現(xiàn)折半查找算法,并在環(huán)節(jié)(2)排序后的序列上,進(jìn)行任意地查找,并輸出查詢(xún)結(jié)果。七、實(shí)驗(yàn)器材(設(shè)備、元器件):PC機(jī)一臺(tái),裝有C語(yǔ)言集成開(kāi)發(fā)環(huán)境。八、數(shù)據(jù)結(jié)構(gòu)與程序:inc1ude<stdio.h>inc1ude<stdlib.h>defineMAX1000^defineFROMFILE1typedefstruetJI){intkey;}JI);intbinsrch(JDr[],intn,intk){intlow,high,mid,found;1ow=1;high=n;found=0;whi1e((1ow<=high)&&(found==0)){mid=(1ow+high)/2;if(k>r[mid].key)1ow=mid+1;elseif(k==r[mid].key)found=1;elsehigh=mid-l;)if(found==l)return(mid);elsereturn(0);)voidquicksort(JDr[],int1ow,inthigh){sinti,j,k;。JDx;oif(1ow>=high)return;ai=1ow;。j=high;,x=r[i];while(i<j){§whi1e((i<j)&&(r[j].key>=x.key))j-;ooif(i<j){r[i]=r[j];i++;)3owhi1e((i<j)&&(r[i].key<=x.key))i++;。if(i<j){r[j]=r[i];j—;})§r[i]=x;3quicksort(r,low,j—1);quicksort(r,j+1,high);}//快速排序intmain(){printf("歡迎使用快速排序與二分查找。\n\n");#ifdefFROMFILEprintf(〃請(qǐng)輸入你所要查找的數(shù)組長(zhǎng)度:〃);int1ength;scanf("%d”,&length);getchar();JDa[length+1];a[0].key=0;inti;for(i=l;i<=1ength;i++){printf("輸入第%d個(gè)數(shù)字:",i);scanf("%d”,&a[i].key);getchar();)#elseFILE*fp;fp=fopen("test.txt","r");if(!fp)printf(〃文獻(xiàn)不存在!〃);return0;)JDa[MAX];a[0].key=0;inti=1;while(fscanf(fp,"%d”,&a[i++].key)!=EOF);intlength=i-1;printf("文獻(xiàn)內(nèi)的信息:");for(i=l;i<length;i++){printf(*%d",a[i].key);)printf('\n");length—;fclose(fp);。#endifquicksort(a,0,length);intkey;printf(〃請(qǐng)輸入你想查找的數(shù)字:〃);scanf(〃/d",&key);getchar();printf("\n");intlocation=binsrch(a,1ength,key);printf(〃位置:〃);for(i=l;i<=1ength;i++)(printfC%3d",i);)printf("\n");printf(〃數(shù)字:〃);for(i=1;i<=1ength;i++){printf(螺3du,a[i].key);)printf("\n,z);if(location){intcount=0;printf(〃目的數(shù)字出現(xiàn)的位置:〃);for(i=1;i<=lcngth;i++){if(a[i].key==a[1ocation].key){printf("%d”,i);count++;))printf(,z\n數(shù)字%d出現(xiàn)的次數(shù):%d\n”,a[location].key,count);)eIse{printf("該數(shù)字不存在!\n'n");)return0;)九、程序運(yùn)營(yíng)結(jié)果:
區(qū)安任意鍵繼續(xù)...輸入你想查找的數(shù)字:4書(shū)快速排序與二,'C:\Users\Admini$trator\Desktop\^^SSl.exe"由125365735:3爨數(shù)數(shù)數(shù)數(shù)饕數(shù)程J11234567891輸蒯區(qū)安任意鍵繼續(xù)...輸入你想查找的數(shù)字:4書(shū)快速排序與二,'C:\Users\Admini$trator\Desktop\^^SSl.exe"由125365735:3爨數(shù)數(shù)數(shù)數(shù)饕數(shù)程J11234567891如輸俅置:12345678g10例子:123335556?該
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.1悄悄變化的我 課件+視頻-七年級(jí)道德與法治下冊(cè)(統(tǒng)編版)
- 《腐植酸尿素》(發(fā)布稿)
- 2024秋期國(guó)家開(kāi)放大學(xué)專(zhuān)科《EXCEL在財(cái)務(wù)中的應(yīng)用》一平臺(tái)在線形考(形考作業(yè)一至四)試題及答案
- 職業(yè)培訓(xùn)考試(鑒 定)人員成績(jī)表
- 成都雙流國(guó)際機(jī)場(chǎng)機(jī)坪從業(yè)人員2024年度復(fù)訓(xùn)復(fù)習(xí)試題及答案
- 風(fēng)險(xiǎn)經(jīng)理崗位資格考試復(fù)習(xí)測(cè)試卷
- 2025屆高考專(zhuān)題復(fù)習(xí):古詩(shī)閱讀答題技巧
- 2024屆湖南省長(zhǎng)沙市岳麓區(qū)湖南師范大學(xué)附中高三適應(yīng)性考試數(shù)學(xué)試題理試題
- 十講民族團(tuán)結(jié)與祖國(guó)統(tǒng)一
- 關(guān)于求職面試一分鐘自我介紹范文
- GB/T 6052-1993工業(yè)液體二氧化碳
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- TSG07-2019壓力管道設(shè)計(jì)質(zhì)量保證手冊(cè)
- DB/T 14-2018原地應(yīng)力測(cè)量水壓致裂法和套芯解除法技術(shù)規(guī)范
- “三教”改革背景下的“教材”改革實(shí)踐課件
- 出口食品生產(chǎn)企業(yè)備案申請(qǐng)表
- JC∕T 2647-2021 預(yù)拌混凝土生產(chǎn)企業(yè)廢水回收利用規(guī)范
- IQC來(lái)料檢驗(yàn)規(guī)范標(biāo)準(zhǔn)書(shū)(最全分類(lèi))85194
- 保險(xiǎn)公司領(lǐng)導(dǎo)班子成員履新任職表態(tài)發(fā)言
- 5普通高中學(xué)生綜合素質(zhì)評(píng)價(jià)標(biāo)準(zhǔn)
- 音樂(lè)、美術(shù)中考模擬試卷附答案
評(píng)論
0/150
提交評(píng)論