實驗五-查找和排序?qū)嶒瀳蟾鎋第1頁
實驗五-查找和排序?qū)嶒瀳蟾鎋第2頁
實驗五-查找和排序?qū)嶒瀳蟾鎋第3頁
實驗五-查找和排序?qū)嶒瀳蟾鎋第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、實驗五 查找和排序1、實驗目的1. 掌握順序查找的基本方法2. 掌握簡單排序和二分法查找的算法。2能運用線性表的查找方法解決實際問題。2、實驗內(nèi)容1、給出在一個無序表A,采用順序查找算法查找值為x的元素的算法2、給出一個無序表B,采用簡單排序方法使該表遞增有序,并采用二分查找算法查找值為x的元素的算法。3、實驗步驟(1)仔細分析實驗內(nèi)容,給出其算法和流程圖;(2)用C語言實現(xiàn)該算法;(3)給出測試數(shù)據(jù),并分析其結果;(4)在實驗報告冊上寫出實驗過程。4、實驗報告要求實驗報告要求書寫整齊,步驟完整,實驗報告格式如下:1、實驗目的2、實驗設備3、實驗步驟4、實驗內(nèi)容5、實驗結果(結論)1.折半查找

2、算法描述如下: int Search_Bin(SSTable ST,KeyType key) low=1;high=ST.length; while(low<=high) mid=(low+high)/2; if EQ(key,ST.elemmid.key) return mid; else if LT(key,ST.elemmid.key) high=mid -1;else low=mid +1 ; return 0; /Search_Bin; 2.順序查找算法描述如下:typedef struct ElemType *elem;int length;SSTable; 順序查找:從表中

3、最后一個記錄開始,逐個進行記錄的關鍵字和給定值的比較,若某個記錄的關鍵字和給定值比較相等,則查找成功,找到所查記錄;反之,查找不成功。int Search_Seq(SSTable ST,KeyType key)ST.elme0.key=key; for(i=ST.length; !EQ(ST.elemi.key,key); -i); return i; (3)寫出源程序清單(加適當?shù)淖⑨專?include "stdio.h"typedef struct BiTNode int data; struct BiTNode *lchild,*rchild;BiTNode,*Bi

4、Tree;void insert(BiTree *bt,BiTree s) /在二叉樹中插入一個新節(jié)點,并將較大數(shù)至于右子樹,較小數(shù)至于左子樹if (*bt=NULL) *bt=s;else if (s->data<=(*bt)->data)insert(&(*bt)->lchild),s);else if (s->data>(*bt)->data)insert(&(*bt)->rchild),s);void ZXBL(BiTree bt) /中序遍歷,二叉樹已排好順序if(bt!=NULL)ZXBL (bt->lchild

5、);printf("%5d",bt->data);ZXBL (bt->rchild);BiTree select (BiTree bt,int key) /在二叉排序樹bt中查找關鍵字等于給定值的結點是否存在if(bt=NULL) return NULL;else if(bt->data=key) return bt;else if(key<bt->data) return select (bt->lchild,key);else return select (bt->rchild,key);void main() char ch;

6、int key;BiTree s,bt=NULL;int i=0; /建立一個二叉樹,元素從鍵盤輸入,直到回車為止printf("n請輸入要一列整數(shù),以空格隔開,回車結束. n");while(ch!='n')scanf("%d",&key);s=(BiTree)malloc(sizeof(BiTNode);s->data=key;s->lchild=s->rchild=NULL;insert (&bt,s);ch=getchar();printf("n排序后: n"); ZXBL (

7、bt);/中序遍歷while(1)printf("n輸入你要查找的關鍵字: ");scanf("%d",&key);s=select(bt,key);if(s!=NULL) printf("%d 查找成功!",s->data);else printf("未發(fā)現(xiàn)你輸入的數(shù)!");printf("n再次查找?(Y/N): ");ch=getch();if(ch!='y'&&ch!='Y') return 0;(4)調(diào)試說明。包括上機調(diào)試的

8、情況、調(diào)試所遇到的問題是如何解決的,并對調(diào)試過程中的問題進行分析,對執(zhí)行結果進行分析。1,問題: malloc無法識別.解決: 百度得知缺少頭文件,導入stdlib.h后解決.2,問題: 輸入后程序無響應.解決: scanf中缺少&,添加后解決.3,問題: 結果顯示不正確,為ASCII碼解決: 輸出改為”%c”.(5)測試結果及說明。對完成所要執(zhí)行的功能情況分析。(1)(2)五實驗體會: 通過本次排序和查找的練習,初步掌握了其基本概念和操作。查找的基本概念: 查找表: 是由同一類型的數(shù)據(jù)元素(或記錄)構成的集合。 查找表的操作: 1、查詢某個“特定的”數(shù)據(jù)元素是否在查找表中。 2、檢索某個“特定的”數(shù)據(jù)元素的各種屬性。 3、在查找表中插入一個數(shù)據(jù)元素; 4、從查找表

溫馨提示

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

評論

0/150

提交評論