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 表示失敗 折半查詢法類似於把靜態有...