一、順序查詢:
二、二分查詢:
int binarysearchrecursion(int arry,int &value,int &start,int &end)
else
}int binarysearchrecursion(int arry,int &len,int &value)
int binarysearch(vector &a, int target)
int start = 0;
intend = a.size() - 1;
intmid;
while (start + 1
< end) else
if (a[mid] < target) else
if (a[mid] > target)
}if (a[start] == target)
if (a[end] == target)
return -1;
}
三、分塊查詢://給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target,用o(logn)的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1。*/
class solution
int start = 0;
int end = a.size() - 1;
int mid;
while (start + 1
< end) else
if (a[mid] < target) else
if (a[mid] > target)
}if (a[start] == target)
if (a[end] == target)
return -1;}};
四、二叉排序樹查詢:#import
struct indexblock //定義塊的結構
indexblock[4]; //定義結構體陣列
int main(int argc, const
char * argv)
; for (int i = 0; i < 3; i++)
printf("請輸入你要查詢的數:\n");
scanf("%d", &x);
k = blocksearch(x, a);
if (k >= 0)
else
}return0;}
int blocksearch(int x, int a)
if (i >= 3)
j = indexblock[i].start; //j等於塊範圍的起始值
while (j<=indexblock[i].end && a[j]!=x)
if (j > indexblock[i].end)
return j;
效能:二叉查詢樹樹執行查詢的時間與樹的深度成正比,即log(n)數量級,在最壞的情況下,二叉查詢樹可能退化成線性鍊錶,此時二叉查詢樹的查詢時間為o(n),與順序表一樣
查詢最小值:最左邊的節點
查詢最大值:最右邊的節點
求前驅節點:
求後繼節點:
插入:
刪除b-樹
查詢:從根結點開始,對結點內的關鍵字(有序)序列進行二分查詢,如果命中則結束,否則進入查詢關鍵字所屬範圍的兒子結點;重複,直到所對應的兒子指標為空,或已經是葉子結點
插入:m/2的限制,在插入結點時,如果結點已滿,需要將結點**為兩個各佔m/2的結點
刪除:需將兩個不足m/2的兄弟結點合併
特性:
b+樹
特性:
**:當乙個結點滿時,分配乙個新的結點,並將原結點中1/2的資料複製到新結點,最後在父結點中增加新結點的指標;b+樹的**只影響原結點和父結點,而不會影響兄弟結點,所以它不需要指向兄弟的指標
b*樹
**:當乙個結點滿時,如果它的下乙個兄弟結點未滿,那麼將一部分資料移到兄弟結點中,再在原結點插入關鍵字,最後修改父結點中兄弟結點的關鍵字(因為兄弟結點的關鍵字範圍改變了);如果兄弟也滿了,則在原結點與兄弟結點之間增加新結點,並各複製1/3的資料到新結點,最後在父結點增加新結點的指標。
特性:b*樹分配新結點的概率比b+樹要低,空間使用率更高
平衡二叉搜尋樹
五、雜湊查詢:
參考 雜湊查詢 雜湊表 hash
參考 字串 hash演算法
查詢演算法總結
順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...
查詢演算法總結
順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...
查詢 演算法總結
順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...