試驗(yàn)6查找和排序_第1頁
試驗(yàn)6查找和排序_第2頁
試驗(yàn)6查找和排序_第3頁
試驗(yàn)6查找和排序_第4頁
試驗(yàn)6查找和排序_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)驗(yàn)六、七:查找、排序算法的應(yīng)用班級10511學(xué)號 20103051114姓名 高衛(wèi)娜、實(shí)驗(yàn)?zāi)康?掌握查找的不同方法,并能用高級語言實(shí)現(xiàn)查找算法。2熟練掌握順序表和有序表的順序查找和二分查找方法。3掌握排序的不同方法,并能用高級語言實(shí)現(xiàn)排序算法。4熟練掌握順序表的選擇排序、冒泡排序和直接插入排序算法的實(shí)現(xiàn)。、實(shí)驗(yàn)內(nèi)容1創(chuàng)建給定的順序表。表中共包含八條學(xué)生信息,信息如下:學(xué)號姓名班級C+數(shù)據(jù)結(jié)構(gòu)1王立0351185762張秋0351178883劉麗0351190794王通0351175865趙陽0351160716李艷0351158687錢娜0351195898孫勝0351145602使用順序查

2、找方法,從查找表中查找姓名為趙陽和王夏的學(xué)生。如果查找成功,則顯示該生的相關(guān)信息;如果查找不成功,則給出相應(yīng)的提示信息。3使用二分查找方法,從查找表中查找學(xué)號為7和12的學(xué)生。如果查找成功,則顯示該生的相關(guān)信息;如果查找不成功,則給出相應(yīng)的提示信息。(注意:創(chuàng)建靜態(tài)查找表時(shí)必須按學(xué)號的從小到大排列!)4使用直接插入排序方法,對學(xué)生信息中的姓名進(jìn)行排序。輸出排序前和排序后 的學(xué)生信息表,驗(yàn)證排序結(jié)果。5使用直接選擇排序方法,對學(xué)生信息中的C成績進(jìn)行排序。輸出排序前和排序后的學(xué)生信息表,驗(yàn)證排序結(jié)果。6使用冒泡排序方法,對學(xué)生信息中的數(shù)據(jù)結(jié)構(gòu)成績進(jìn)行排序。輸出排序前和排 序后的學(xué)生信息表,驗(yàn)證排序

3、結(jié)果。7編寫一個(gè)主函數(shù),將上面函數(shù)連在一起,構(gòu)成一個(gè)完整程序。8將實(shí)驗(yàn)源程序調(diào)試并運(yùn)行。三、實(shí)驗(yàn)結(jié)果 源程序代碼為:#in clude#in clude#i nclude #defi ne MAXSIZE 10typedef char KeyType1;typedef int KeyType2;typedef struct/學(xué)號姓名 班級 C+ 數(shù)據(jù)結(jié)構(gòu)KeyType1 name20;KeyType2 xuehao;KeyType1 Class20; double score2; DataType;typedef structDataType dataMAXSIZE+1;int len; Se

4、qList;/順序表的創(chuàng)建void create(SeqList &L)cout 請輸入順序表的大小 :L.len;數(shù)據(jù)cout 請輸入順序表中八條學(xué)生信息(學(xué)號 姓名 班級 C+ 結(jié)構(gòu)) :endl;for(int i=1;iL.datai.xuehao; cinL.; cinL.datai.Class; cinL.datai.score0; cinL.datai.score1;void Input(SeqList &L)for(int i=1;iL.datai.xuehao; cinL.; cinL.datai.Class; cinL.datai.s

5、core0; cinL.datai.score1;/順序表的顯示void print(SeqList L)cout 學(xué)號 姓名 班級 C+ 數(shù)據(jù)結(jié)構(gòu) endl; if(L.len=0)cout 該表是空表! endl;return;for(int i=1;i=L.len;i+)cout L.datai.xuehao L. L.datai.Class L.datai.score0 L.datai.score1;coutendl;/順序查找方法從查找表中查找姓名為趙陽和王夏的學(xué)生void S_Search(SeqList L)char na20;cout 請輸入要查找的同學(xué)的姓

6、名: na;strcpy(L.,na); / 監(jiān)視哨int i=L.len; while(strcmp(L.,na)0|strcmp(L.,na)0)cout 您要查找的學(xué)生的信息: endl; cout 學(xué)號 姓名 班級 C+ 數(shù)據(jù)結(jié)構(gòu) endl;cout L.datai.xuehao L. L.datai.Class L.datai.score0 L.datai.score1;coutendl;if(i=0)cout 對不起,沒有該同學(xué)的信息! endl;/二分查找方法從查找表中查找學(xué)號為7 和 12 的學(xué)生/

7、非遞歸void Binary_Search(SeqList &L)int kx;cout 請輸入您要查找的學(xué)生信息的學(xué)號:kx;cout 學(xué)號 姓名 班L.L.datamid.score0int low=1,high=L.len,mid; while(low=high) mid=(low+high)/2; if(L.datamid.xuehao=kx) cout 您要查找的學(xué)生的信息: endl; 級 C+ 數(shù)據(jù)結(jié)構(gòu) endl;cout L.datamid.xuehao L.datamid.Class L.datamid.score1;coutkx) high=mid-

8、1;else low=mid+1; if(lowhigh)cout 沒有該學(xué)號的學(xué)生信息! endl;/直接插入排序方法對順序表直接插入排序的算法對學(xué)生信息中的姓名進(jìn)行排序: void InsertSort( SeqList &L )int i, j;for( i=2; i=L.len; i+ )if(strcmp(L., L.)0)L.data0=L.datai; / 復(fù)制為哨兵for(j=i-1; strcmp(L., L.)0; j- )L.dataj+1=L.dataj; / 記錄后移L.dataj+1

9、=L.data0; / 插入到正確位置print(L);/直接選擇排序方法對學(xué)生信息中的C 成績進(jìn)行排序void SelectSort(SeqList &L)int i, j,k;DataType temp;for( i=1; iL.len; i+ )k = i;for( j=i+1; j=L.len; j+ )if( L.dataj.score0 L.datak.score0 )k = j ;if( k != i )temp = L.datai;L.datai = L.datak;L.datak =temp;print(L);/冒泡排序方法對學(xué)生信息中的數(shù)據(jù)結(jié)構(gòu)成績進(jìn)行排序void Bubb

10、leSort(SeqList &L)int i,j,flag=1;DataType x;for(i=1;(iL.len)&(flag=1);i+)flag=0;for(j=1;jL.dataj+1.score1) x=L.dataj;L.dataj=L.dataj+1;L.dataj+1=x;flag=1;print(L);void main()SeqList L;int a;coutendl;while(a!=0)coutendl;系統(tǒng)cout 歡 迎 使 用 學(xué) 生 信 息nendl;coutendl;cout 1 :錄入學(xué)生信息 2 : 按姓名查找學(xué)生信息 3: 按學(xué)號查找學(xué)生信息 en

11、dl;coutendl;cout 4 :按姓名排序后學(xué)生信息5 :按 c 成績排序?qū)W生信息 endl;coutendl;cout 6 :按數(shù)據(jù)結(jié)構(gòu)成績排序后學(xué)生信息 7 :顯示 0 :退出 endl;coutendl;coutendl;coutendl;couta;switch(a)case 1:case 2:case 3:case 4:case 5:case 6:endl;case 7: case 0: default: create(L); break; /順序查找方法從查找表中查找姓名為趙陽和王夏的學(xué)生 S_Search(L); break; Binary_Search(L); brea

12、k; cout 對學(xué)生信息中的姓名進(jìn)行排序?yàn)椋?endl; InsertSort(L);break;cout 對學(xué)生信息中的 C 成績進(jìn)行從低到高排序?yàn)椋?endl; SelectSort(L);break;cout 對學(xué)生信息中的數(shù)據(jù)結(jié)構(gòu)成績進(jìn)行從低到高排序?yàn)椋築ubbleSort(L); break;print(L); break; exit(0);cout 您輸入的序號不正確,請重新輸入: 05117RS03511907?035117503511“pi03511B8es0351195B?9351145636E艷0351158693賓IJM03511907?7t囪涼511?5站字小肚035

13、11轉(zhuǎn)斤1 -V03511S57&4103511758&2弓報(bào)03E1178695i那日035116071圖1-4按姓名排序鹽您鰹1ST?班級C+數(shù)據(jù)結(jié)構(gòu)63511胸68EEJ90797B35119589e孫KS3E114&G01干方S3511眄764-83S1175B62張0351178885趙陽63511G9?1於坐信恵沖益戍績進(jìn)行從低到高排序?yàn)椋簩W(xué)號班級C+數(shù)據(jù)結(jié)構(gòu)0J51145醐60351158685UJ5116U71斗03511758620351178881035118&7630351190797035119S89圖1-5按c成績排序57 I lrf姓名1flJSii351103511605116351103511C3511035L1數(shù)據(jù)結(jié)構(gòu)63&97L&66S7&79897 班級03511351103511B351163511B35110351103511圖1-6按數(shù)據(jù)結(jié)構(gòu)成績排序 結(jié)束結(jié)杲如圖1-7:r77wPEIJJLX侖入您的選擇為 0*peTS d(iy key to continmc圖1-7推出程序四、實(shí)驗(yàn)總結(jié)(1) exit(O)需要頭文件 #include 退出程序;(2) 比較字符串使用頭文件#中得strcmp ();復(fù)制字符串

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論