我編碼了的Interpolation Search在C.輸入一個浮點值或使用math.h floor *函數?
實現的問題其實很簡單,我需要使用浮點運算做線性插值來找到正確的指數,這最終將成爲一個整數結果。
特別我的探測器索引是:
t = i + floor((((k-low)/(high-low)) * (j-i)));
其中,I,J,K,T是無符號的整數,和高,低雙打。
這將是等效於:
t = i + (unsigned int)(((k-low)/(high-low)) * (j-i));
是否有任何理由我真的想使用math.h中樓*功能上只是一個簡單的(INT)類型轉換?
我明白了,感謝您的詳細信息。好消息是:((k-低)/(高 - 低))*(j-i)如果算法編碼正確(因爲它是到數組中的索引),則保證大於等於0。 所以這似乎是一個合適的選擇。 謝謝。 – nobody 2010-04-04 06:57:55
@nobody:注意從性能的角度來看,轉換爲整型可能不會比使用「floor」更快。投射到一個整型可能需要寫入內存(在x86上,它幾乎保證),而調用'floor'可能不會,因爲它的結果是一個浮點值。您的里程可能會有所不同,但請注意過早和/或誤導性的優化。 – 2010-04-04 07:04:52