筆記 查詢演算法

2021-10-08 17:54:59 字數 1060 閱讀 4153

int sequencesearch(int *a, int value, int n)

{int i;

for(i=0; i迴圈版本

int binarysearch1(int *a, int value, int n)

{int low, high, mid;

low = 0;

high = n-1;

while(low<=high)

{mid = (low+high)/2;

if(a[mid]==value)

return mid;

if(a[mid]>value)

high = mid-1;

if(a[mid]value)

return binarysearch2(a, value, low, mid-1);

if(a[mid]最簡單的樹表查詢演算法——二叉樹查詢演算法

①二叉查詢樹(binarysearch tree,也叫二叉搜尋樹,或稱二叉排序樹binary sort tree)或者是一棵空樹,或者是具有下列性質的二叉樹:

1)若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;

2)若任意節點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;

二叉查詢樹性質:對二叉查詢樹進行中序遍歷,即可得到有序的數列。

複雜度分析:它和二分查詢一樣,插入和查詢的時間複雜度均為o(logn),但是在最壞的情況下仍然會有o(n)的時間複雜度。原因在於插入和刪除元素的時候,樹沒有保持平衡。我們追求的是在最壞的情況下仍然有較好的時間複雜度,這就是平衡查詢樹設計的初衷。②③

④⑤演算法思想:將n個資料元素"按塊有序"劃分為m塊(m ≤ n)。每一塊中的結點不必有序,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;而第2塊中任一元素又都必須小於第3塊中的任一元素,……

演算法流程:

step1 先選取各塊中的最大關鍵字構成乙個索引表;

step2 查詢分兩個部分:先對索引表進行二分查詢或順序查詢,以確定待查記錄在哪一塊中;然後,在已確定的塊中用順序法進行查詢。

《演算法筆記》學習筆記 3 2查詢

本節目錄 題目描述 思路 因為需要用試機座位號碼來查詢考生座位號,所以用結構體陣列,試機座位號作為下標,存放相應輸入資料在結構體中的位置,當查詢時,直接將輸入的試機座位號作為下標就可以查詢到其在結構體陣列中的下標,如下所示 include include struct tnumber tnum 10...

查詢演算法筆記(C 版)

記錄最近學習的一些查詢演算法 時間複雜度 o n 順序查詢 intsequentialsearch int list,int n,int x return 1 測試 int main void 可以是無序陣列 cout list for int i 0 i 10 i cout list i cout...

演算法筆記 查詢學生資訊

題目描述 輸入n個學生的資訊,然後進行查詢。輸入輸入的第一行為n,即學生的個數 n 1000 接下來的n行包括n個學生的資訊,資訊格式如下 01 李江 男 21 02 劉唐 男 23 03 張軍 男 19 04 王娜 女 19 然後輸入乙個m m 10000 接下來會有m行,代表m次查詢,每行輸入乙...