標(biāo)題: 二分查表法程序,高效查找數(shù)據(jù),溫度檢測很實用 [打印本頁]
作者: yuhuidx 時間: 2020-11-12 15:56
標(biāo)題: 二分查表法程序,高效查找數(shù)據(jù),溫度檢測很實用
用最少的運算次數(shù)找出數(shù)據(jù)位置,基礎(chǔ)思路。1000個數(shù)據(jù),第一次判定是前500還是后500,第二次是前250還是后250.這樣1000個數(shù)據(jù)很快就可以查完。
uint8 FineTab(uint16 *a,uint8 TabLong,uint16 data)//表中數(shù)據(jù)從大到小
{
uint8 st,ed,m ;
uint8 i ;
st = 0 ;
ed = TabLong-1 ;
i = 0 ;
if(data >= a[st]) return st ;
else if(data <= a[ed]) return ed ;
while(st < ed)
{
m = (st+ed)/2 ;
if(data == a[m] ) break ;
if(data < a[m] && data > a[m+1]) break ;
if(data > a[m]) ed = m ;
else st = m ;
if(i++ > TabLong) break ;
}
if(st > ed ) return 0 ;
return m ;
}
作者: 紫色的云 時間: 2020-11-12 18:31
高效解決問題
作者: 黃youhui 時間: 2020-11-13 14:23
你的代碼有很大的局限性,可以參考但不能直接用:首先你這個數(shù)據(jù)早就按大小順序排列好了。其次你的2分法如果數(shù)據(jù)總數(shù)是單數(shù)怎么處理,也沒有明確方法。
作者: yuhuidx 時間: 2020-11-24 14:09
1.這個你在做實際項目時就能體會到用處,特別是非線性傳感器,需要數(shù)據(jù)庫修正。
2.這個不分奇數(shù)偶數(shù)。
作者: 達(dá)朗貝爾 時間: 2020-11-25 10:43
贊,學(xué)校師傅讓我們做一個溫度數(shù)據(jù)采集檢測分析的項目,通過查表方式得到溫度,用二分法,能快速提高查表效率
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |