導航:首頁 > 數據處理 > 數據結構如何折半

數據結構如何折半

發布時間:2023-01-27 20:26:24

❶ 數據結構怎樣折半查找

舉個例子說明吧,在下面一堆數中找數字2
編寫代碼是先定義3個int類型的變數m,f,l,
初始時,將f==1的地址,l==7的地址,m=(f+l)/2
先遍歷m處的數據,它大於2,說明2在它的左邊,這個時候將l的值改一下,改成l=m-1(為什麼呢?因為你把l改成m-1,那麼下一次遍歷就在1到4之間查找了。)
l=m-1,f=1不變,m等於此時的l加f的和除以2,即m=(f+l)/2,那麼m就指向(1+4)/2=2.5的位置,但是m是int類型,在c中2.5取整後為2,所以m=2,m指向數組第二個位置,這個位置的數據就是2,查找成功!

初始時:
f=First m=Middle l=last
↓ ↓ ↓
1 2 3 4 5 6 7

第二次遍歷:
f m l
↓ ↓ ↓
1 2 3 4 5 6 7

❷ 數據結構折半查找演算法的方法

#include<stdio.h>

intDichotomy(inta[],int_value,intn){//二分法(也稱折半查找法)
intindex=0;//當前數組的首元素下標
intcurrent=n-1;//數組當前的大小
intk;//當前數組中間的數的下標

while(index<current)
{
//開始二分法查找
k=(index+current)/2;//除以2代表得到當前數組中間的數的下標
if(a[k]==_value)returnk;//返回要查找的值_value所在的下標

//否則比較要查找的值_value是在折半後的前半部分還是後半部分
if(a[k]<_value){//說明要查找的值在折半後的後半部分
index=k+1;//令index指向後半部分數組的首元素
}
else{//說明要查找的值在折半後的前半部分
current=k-1;//令current等於前半部分數組的長度
}

}
return-1;//返回-1代表沒有查找到該值(_value)
}
voidmain(){
intarr[5]={2,12,45,87,95};//前提是一組數組必須是有序數對(即按小到大或大到小)

if(Dichotomy(arr,87,5)!=-1)
printf("87在數組中對應的下標是:%d ",Dichotomy(arr,87,5));
elseprintf("沒有找到指定的值 ");
}
//用一句話概括二分法(折半查找法)的思想就是:在一組有序對數組中反復折半後得到中間數組的下標,然後再進行是否與要查找的值相等,若相等則返回當前要查找的值的下標。

那麼,上面的代碼的注釋與下面一一對應,它在執行的結果會產生兩種情況,第一種,不存在。第二種,存在。
先來說說第一種情況不存在:
1.如果給定要查找的值_value大於數組中最大的數,則index不斷增大從而促使while循環終止2.如果給定要查找的值_value小於數組中最小的數,則current不斷減少從而促使while循環終止(你自己可以動手在紙上畫一個數組,然後思路跟著代碼走就會知道或設單步調試亦可)

第二種情況存在:
1.要查找的數_value正好是在數組中間.那麼就執行了一次循環,當然這也是最理想的效果.

否則反復執行2和3:
2.如果要查找的數_value不存在中間,則判斷它是否大於中間的數還是小於中間的數,如果小於中間的數則說明_value應該在數組中間的前半部分,那麼current=k-1(即令current等於前半部分的長度),然後仍然採取折半的方法,反復此操作直至找到該數的下標為止.

3.如果要查找的數_value不存在中間,則判斷它是否大於中間的數還是小於中間的數,如果大於中間的數則說明_value應該在數組中間的後半部分,那麼index=k+1(即令index指向後半部分的第一個下標),然後仍然採取折半的方法,反復此操作直至找到該數的下標為止.

閱讀全文

與數據結構如何折半相關的資料

熱點內容
一點點那個點餐小程序怎麼做的 瀏覽:131
軟體程序如何驅動硬體的 瀏覽:529
英語學校市場推廣怎麼做 瀏覽:587
魏大勛代言了哪些產品 瀏覽:855
干皮不適合用什麼產品 瀏覽:170
海寧小百貨批發市場在哪裡 瀏覽:896
專業技術職稱資格證書怎麼填寫 瀏覽:940
大鍋牛雜市場怎麼樣 瀏覽:498
國外賣產品的公司有哪些 瀏覽:973
海城有哪些海鮮市場 瀏覽:148
如何小程序改頭像 瀏覽:3
想做尿不濕代理沒客源怎麼辦 瀏覽:546
新繁龍橋市場屬於哪個社區 瀏覽:82
產品代理行業有哪些 瀏覽:241
數據交換平台多少錢 瀏覽:878
哪個地方有土地市場 瀏覽:282
電腦軟體如何做程序 瀏覽:987
代理產品主要看產品的什麼 瀏覽:686
查絕經的6項指標數據是哪些 瀏覽:936
長沙科技職業技術學院多少分才能進 瀏覽:315