有序表查詢(二分查詢,插值查詢,斐波那契查詢)

2021-07-11 21:10:23 字數 753 閱讀 2766

1.二分查詢

//二分查詢非遞迴 

int binary_search1(int *num, int len,int target)

return -1;

}//二分查詢遞迴

int binary_search2(int *num, int low, int hight, int target)

return -1;

}

2.插值查詢

//插值查詢 

int interpolationsearch(int *num,int len,int key)

return -1;

}

3.斐波那契查詢

//斐波那契查詢

int fibonacisearch(int *num, int len, int key)

else if(key>num[mid])

else{

if(mid

二分查詢是進行加法與除法運算

mid=(low+hight)/2;

插值查詢進行複雜的四則運算

mid=low+(high-low)*(key-num[low])/(num[high]-num[low]);

斐波那契

mid=low+fibonaci(k-1)-1;

二分查詢 插值查詢 斐波那契查詢

在有序表中,取中間記錄作為比較物件,將其與給定值相比較,若其等於給定值,則查詢成功 若其小於給定值,則在中間記錄的右半區繼續查詢 若其大於給定值,則在中間記錄的左半區繼續查詢。不斷重複以上過程,直到查詢成功或無匹配記錄。使用該查詢方法的前提條件在於,線性表中的資料必須有序,且必須採用順序儲存的方式。...

二分查詢,插值查詢,斐波那契查詢

二分查詢,插值查詢,斐波那契查詢 1.二分查詢 偽 while left else if key arr left index 2 then right left right 2 else left left right 2 end 示例 public int midsearch listarr,i...

順序查詢 二分查詢,斐波那契查詢,插值查詢

include include include using namespace std void printerr else if arr mid ele else return 1 void print int i else if len 2 else if len 3 else if len 3...