資源描述:
《數(shù)據(jù)結構查找算法的實現(xiàn)實驗報告》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務技能及個人素質(zhì)的培訓計劃數(shù)據(jù)結構查找算法的實現(xiàn)實驗報告 《數(shù)據(jù)結構》第八次實驗報告 學生姓名學生班級學生學號指導老師 重慶郵電大學計算機學院 一、實驗內(nèi)容 1)有序表的二分查找 ?建立有序表,然后進行二分查找 2)二叉排序樹的查找 ?建立二叉排序樹,然后查找 二、需求分析 二分查找的基本思想是將n個元素分成大致相等的兩部分,取a[n/2]與x做比較,如果x=a[n/2],則找到x,算法中止;如果xa
2、[n/2],則只要在數(shù)組a的右半部搜索x.時間復雜度無非就是while循環(huán)的次數(shù)! 總共有n個元素, 漸漸跟下去就是n,n/2,n/4,....n/2^k,其中k就是循環(huán)的次數(shù) 由于你n/2^k取整后>=1 即令n/2^k=1 可得k=log2n, 所以時間復雜度可以表示O()=O(logn)目的-通過該培訓員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)
3、人員的業(yè)務技能及個人素質(zhì)的培訓計劃 下面提供一段二分查找實現(xiàn)的偽代碼: BinarySearch(max,min,des) mid-desthen max=mid-1 else min=mid+1 returnmax 折半查找法也稱為二分查找法,它充分利用了元素間的次序關系,采用分治策略,可在最壞的情況下用O(logn)完成搜索任務。它的基本思想是,將n個元素分成個數(shù)大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2]則找到x,算法終止。如果xa[n/2],則我們只要在數(shù)
4、組a的右半部繼續(xù)搜索x?! ∪?、概要設計 1、順序查找,在順序表R[0..n-1]中查找關鍵字為k的記錄,成功時返回找到的記錄位置,失敗時返回-1,具體的算法如下所示:intSeqSearch(SeqListR,intn,KeyTypek) { }inti=0;while(i=n){}printf("%d",R[i].key);returni;return-1;elseprintf("%d",R[i].key);i++; 2、二分查找,在有序表R[0..n-1]中進行二分查找,成功時返回記錄的位置
5、,失敗時返回-1,具體的算法如下:目的-通過該培訓員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務技能及個人素質(zhì)的培訓計劃 intBinSearch(SeqListR,intn,KeyTypek) { } return-1; }intlow=0,high=n-1,mid,count=0;while(lo(來自:寫論文網(wǎng):數(shù)據(jù)結構查找算法的實現(xiàn)實驗報
6、告)wk)else 四、詳細設計 源代碼: #include #include staticinta[1024],count=0; voidFind1(intlow,inthigh,intx) { intmid; if(lowx)Find1(low,mid-1,x); elseif(a[mid]x)Find2(mid+1,high,x); elseprintf("查é找ò到?元a素?位?置?為a%d,?查é找ò次?數(shù)簓為a%d。£",mid,count);} elseprint
7、f("查é找ò失骸?敗悒?,?查é找ò次?數(shù)簓為a%d?!?,count); } intmain()目的-通過該培訓員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務技能及個人素質(zhì)的培訓計劃 { intn,x; printf("請?輸?入?元a素?個?數(shù)簓:"); scanf("%d",&n); printf("請?按恪?從洙?高?到?低
8、臺?或ò從洙?低臺?到?高?順3序ò輸?入?各÷元a素?(以?空?格?隔?開a):"); for(inti=1;i<=n;i++) scanf("%d",&a[i]); printf("請?輸?入?要癮查é找ò的?元a素?:阰"); scanf("%d",&x); if(a[1]<=a[n])Find1(1,n,x); elseFind2(1,n,x); printf(""); system