靜態查詢問題描述為:給定乙個整數和乙個陣列,查詢該整數在這個陣列中的位置或返回乙個不存在的標誌,在查詢過程中陣列中的資料是不變的。例如在乙個**號碼本裡查詢某乙個人。如果陣列中的資料是無序的,我們只能用順序查詢來檢查陣列中的每乙個值,直到找到乙個匹配的為止。如果陣列中的資料已經排過序,就可以使用二分搜尋來代替順序查詢。二分搜尋每次都是從給定查詢範圍的中間開始而不是從端點開始,這樣可以提高查詢效率。二分搜尋在查詢乙個有序的靜態陣列時很快,是我們經常使用的方法。但是如果我們要查詢的值在靠近端點的位置,這時再使用二分搜尋顯然是不明智的。這時就可以使用更快的一種查詢方法插值法。插值法不是簡單地使用中間值來查詢,而是要對查詢值所在的位置做乙個正確的猜測,來確定要查詢的一下項。
下面是插值法的boo實現:
import systemdef interpolationsearch(obj as int, *args as (int)):
low = 0
high = args.length - 1
next as int
while low < high:
//to determine the position of the next item
next = low + ((obj - args[low]) / (args[high] - args[low])) * (high - low - 1)
if args[next] < obj:
low = next + 1
else:
high = next
if args[low] == obj:
return low
return -1
>>>a = array(range(3, 1000))上面在陣列a中查詢85所在的位置,返回82....>>>interpolationsearch(85, *a)
82>>>
插值查詢的問題
對於插值查詢的效率很高,但是我發現乙個問題,就是在不連續的情況下,找 arrarr之間的數時應該是返回 1,但是出現了堆疊溢位異常 以下是 public static void main string args int i insertvalue arr,0,arr.length 1,50 syst...
二分查詢法與拉格朗日插值查詢法
define crt secure no warnings include include define n 1024 void search1 int a n int num 二分法插值查詢 else if num a zhong else if flag 1 void search2 int a...
VUE課程 7 解決插值表示式閃爍問題
vue中解決插值表示式閃爍問題,可以用v cloak指令,v cloak在css中用屬性選擇器設定為display none style 屬性選擇器 v cloak style div id p v cloak p div 在vue沒有被成功載入解析之前,檢視對應的標籤上帶了v cloak屬性 指令...