資源描述:
《利用隨機(jī)化算法對(duì)順序表進(jìn)行搜索》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、隨機(jī)化算法實(shí)驗(yàn)要求1.理解計(jì)算機(jī)隨機(jī)數(shù)的產(chǎn)生;1.理解隨機(jī)化算法原理及一般應(yīng)用;2.編程實(shí)現(xiàn)典型隨機(jī)算法,理解算法思想,并對(duì)算法進(jìn)行驗(yàn)證分析。實(shí)驗(yàn)內(nèi)容利用隨機(jī)化算法對(duì)順序表進(jìn)行搜索:l隨機(jī)抽取有序表元素;l從最接近待查元素開(kāi)始搜索。實(shí)驗(yàn)結(jié)果定義一個(gè)60000個(gè)元素的數(shù)組,元素值依次為2,4,6…120000。隨機(jī)抽取300次,根據(jù)抽取的元素就近查找某數(shù)是否存在。輸入元素為待查找整數(shù),結(jié)果為元素下標(biāo)位置(從0開(kāi)始)。--------------------------------------------示
2、例輸入:1999示例輸出:-1--------------------------------------------示例輸入:6示例輸出:2源代碼:://科目:算法實(shí)驗(yàn)//題目:利用隨機(jī)化算法對(duì)順序表進(jìn)行搜索://隨機(jī)抽取有序表元素;//從最接近待查元素開(kāi)始搜索。//作者:武葉//語(yǔ)言:C語(yǔ)言//創(chuàng)作時(shí)間:2012年5月6日#include#include#defineM60000longm[60000];longn[60000];intsuiji[300];ints
3、earch(intresult){intaddress,address1,address2,min,j,k,temp;intlocate=-1;intb=245;intc=23;n[0]=m[0];suiji[0]=0;for(k=0;k<299;k++){suiji[k+1]=(suiji[k]*b+c)%M;}//對(duì)suiji[300]數(shù)組的隨機(jī)值進(jìn)行冒泡排序for(k=0;k<=299;k++){for(j=0;j<300-k;j++)if(suiji[j]>suiji[j+1]){temp=su
4、iji[j];suiji[j]=suiji[j+1];suiji[j+1]=temp;}}//根據(jù)suiji數(shù)組的值將相應(yīng)的x數(shù)組中的值存在y數(shù)組中for(k=0;k<300;k++){j=suiji[k];n[j]=m[j];}min=(int)fabs(n[0]-result);//求result與抽取數(shù)組中的元素之差的絕對(duì)值address=0;for(k=0;k5、bs(n[k]-result);address=k;}}//判斷元素在x數(shù)組中的位置if(min==0){returnaddress;}else{address1=address-min/2;//元素可能出現(xiàn)下標(biāo)位置范圍address2=address+min/2;for(k=address1;k<=address2;k++){if(result==m[k])//查找下標(biāo){locate=k;break;}}returnlocate;}}intmain(){inti,search_num,location
6、;//location為查找元素的位置search_num為要查找的數(shù)for(i=0;i<60000;i++)m[i]=(i+1)*2;//定義m[i]為2,4,6…120000。scanf("%d",&search_num);if(search_num<0
7、
8、search_num>120000
9、
10、search_num%2==1){printf("-1");}else{location=search(search_num);printf("%d",location);}return0;}答銷(xiāo)網(wǎng)真
11、情提供::::www.daxiao51.com文章出處::::::http://www.daxiao51.com/forum.php?mod=viewthread&tid=1545&extra=page%3D1