查詢 有序表查詢

2021-09-29 21:48:32 字數 916 閱讀 1987

1、折半查詢

折半查詢又稱二分查詢,時間複雜度為

2、插值查詢

插值查詢是另一種有序表查詢演算法,其核心就在於插值公式

3、斐波那契查詢

4、三種有序表查詢演算法比較

三種有序表查詢本質上是分隔點的選擇不同,折半查詢分隔點是

折半查詢進行加法和除法運算(mid=(low+high)/2),插值查詢進行複雜的四則運算(mid=low+(high-low)*(key-a[low])/(a[high]-a[low])),而斐波那契查詢只有簡單的加減法運算(mid=low+f[k-1]-1),在海量資料查詢過程中,這種微小的差別可能會影響最終的查詢效率。

#include#includeusing namespace std;

#define max 100

//折半查詢

int binarysearch(int *a,int n,int key)

return 0;

}//插值查詢

int interpolationsearch(int *a,int n,int key)

return 0;

}//斐波那契查詢

int *f; //儲存fibonacci數

//生成fibonacci陣列

void fibonacci(int n) }}

int fibonaccisearch(int *a,int n,int key)

else

}return 0;

}int main()

; int n=10,key=1;

sort(a,a+n);

fibonacci(n);

cout<

cout<

cout<

return 0;

}

有序表查詢

順序表查詢法,簡單但是不智慧型。1.折半查詢法 binary search 如果線性表在排序是有序的 這種情況下我們才用順序儲存。折半查詢法 int binarysearch int a,int n,int key else return mid return 1 表示失敗 折半查詢法類似於把靜態有...

有序表查詢

折半查詢 折半查詢又稱為二分查詢,它的前提是線性表中的記錄必須是關鍵碼有序,線性表必須採用順序儲存。折半查詢的基本思想是 在有序表中,取中間記錄作為比較物件,若給定值與中間記錄相等,則查詢成功 若給定值小於中間記錄關鍵字,則在中間記錄的左半區繼續查詢 若給定值大於中間記錄關鍵字,則在中間記錄的右半區...

有序表查詢

順序表查詢法,簡單但是不智慧型。1.折半查詢法 binary search 如果線性表在排序是有序的 這種情況下我們才用順序儲存。折半查詢法 int binarysearch int a,int n,int key else return mid return 1 表示失敗 折半查詢法類似於把靜態有...