查詢與排序 實驗報告_第1頁
查詢與排序 實驗報告_第2頁
查詢與排序 實驗報告_第3頁
查詢與排序 實驗報告_第4頁
查詢與排序 實驗報告_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

學院 專業 班 學號 姓名 協作者_教師評定_實驗題目 查詢與排序 綜合實驗評分表指導教師評分標準序號評分項目評分標準滿分打分1完成度按要求獨立完成實驗準備、程序調試、實驗報告撰寫。202實驗內容(1) 完成功能需求分析、存儲結構設計;(2) 程序功能完善、可正常運行;(3) 測試數據正確,分析正確,結論正確。303實驗報告內容齊全,符合要求,文理通順,排版美觀。404總結對實驗過程遇到的問題能初步獨立分析,解決后能總結問題原因及解決方法,有心得體會。10實驗報告一、 實驗目的與要求1、掌握散列表的構造及實現散列查找;2、掌握堆排序的算法;3、綜合比較各類排序算法的性能。二、 實驗內容#includestdio.h#includestdlib.h#includestring.h#includewindows.h#define MAX 20typedef structunsigned long key;int result;char name30;RNode;RNode tMAX,rMAX;int h(unsigned long k) /*散列函數*/return(k-3109005700)%11);void insert(RNode t,RNode x) /*插入函數,以線性探查方法解決沖突*/int i,j=0;i=h(x.key);while(j0)j+;if(j=MAX) printf(fulln);i=(i+j)%MAX;if(ti.key=0)ti=x;elseif(ti.key=x.key) printf(記錄已存在!n);int search(RNode t,unsigned long k) /*插入函數,以線性探查方法解決沖突*/int i,j=0;i=h(k);while(jMAX)&(t(i+j)%MAX.key!=k)&(t(i+j)%MAX.key!=0)j+;i=(i+j)%MAX;if(ti.key=k)return(i);if(j=MAX)return MAX;elsereturn(-i);void sift(RNode r,int v,int w)int i,j;RNode a;i=v;a=ri;j=2*i+1;while(j=w)if(jrj+1.result)j+;if(a.resultrj.result)ri=rj;i=j;j=2*j+1;else break;ri=a;void sort(RNode r,int n)int i;RNode y;for(i=n/2-1;i=0;i-)sift(r,i,n-1);for(i=n-1;i0;i-)y=r0;r0=ri;ri=y;printf(學生姓名:%st學生學號:%ut學生成績:%dn,,ri.key,ri.result);sift(r,0,i-1);printf(學生姓名:%st學生學號:%ut學生成績:%dn,,r0.key,r0.result);int menu() /*菜單函數*/ int select; printf(nn); printf(n); printf(tt*查找排序實驗*n); printf(tt*n); printf(tt*歡迎進入系統*n); printf(tt* menu: *n); printf(tt* 1.查找 *n); printf(tt* 2.排序 *n); printf(tt* 0.退出 *n); printf(tt*n); printf(n); printf(ttt請輸入0-2n ); printf(n); printf(請選擇您所要的操作(選擇(0)退出):); scanf(%d,&select); getchar(); return(select); void main() /*主函數*/ int i,s,n,select; int j=0,m=0; RNode y; for(i=0;iMAX;i+) ti.key=0; /*初始化*/ for(i=0;i10;i+) /*導入記錄*/ switch(i) case 0: RNode x; x.key=310900*; strcpy(, *); x.result=90; insert(t,x); break; case 1: RNode x; x.key=31090*1; strcpy(, *); x.result=95; insert(t,x); break; case 2: RNode x; x.key=3109005*; strcpy(, *); x.result=92; insert(t,x); break; case 3: RNode x; x.key=31090*; strcpy(, *); x.result=93; insert(t,x); break; case 4: RNode x; x.key=3109005*; strcpy(, *); x.result=94; insert(t,x); break; case 5: RNode x; x.key=310900*; strcpy(, *); x.result=91; insert(t,x); break; case 6: RNode x; x.key=3109005*; strcpy(, *); x.result=96; insert(t,x); break; case 7: RNode x; x.key=310900*; strcpy(, *); x.result=99; insert(t,x); break; case 8: RNode x; x.key=310900*; strcpy(, *); x.result=98; insert(t,x); break; case 9: RNode x; x.key=310900*; strcpy(,*); x.result=97; insert(t,x); break; printf(nnnnnnn); system(cls); loop: printf(nnn); select=menu(); switch(select) case 1: printf(n請輸入要查找的學生學號:); scanf(%u,&y.key); s=search(t,y.key); if(s=MAX|s0) printf(not findn); else printf(nn你要查找的學生信息n); printf(學生姓名:%st學生學號:%u,,ts.key); break; case 2: for(i=0;iMAX;i+) if(ti.key!=0) rj+=ti; m+; printf(排序之前:nn); for(i=0;im;i+) printf(學生姓名:%st學生學號:%ut學生成績:%dn,,ri.key,ri.result); printf(n排序之后:n); sort(r,m); break; case 0:exit(0); getchar(); goto loop;三、 實驗結果和數據處理(1) 查找數據(310900*)(2) 排序四、 總結這次的課程實驗完成了主控界面,錄入,輸出,排序,查找,結束界面等功能。在程序調試過程之中,我還是個初學者,在編寫程序的過程中不斷出現不同狀況的錯誤,在修改中不斷發現自己的問題和不足。通過編譯調試,程序提示錯誤所在,然后我們根據提示再進行修改。從這個過程之中,使我多多思考問題,不斷摸索,盡量自己發現錯誤所在并加以改正,以便在下次不再犯同類型的錯誤。也就是說在調試的過程中,不斷的學習,不斷的改進,提高自身C語言學習能力和算法設計能力。五、 問題與討論1、 分析你所構造散列表的查找成功的平均查找長度?01234567891033

溫馨提示

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

評論

0/150

提交評論