close
二分搜尋法:
如果搜尋的數列已經有排序,應該儘量利用它們已排序的特性,以減少搜尋比對的次數,
這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。
在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已
排序,則該數左邊的數一定都小於要搜尋的對象,所以無需浪費時間在左邊的數;如果搜尋的
數大於所搜尋的對象,則右邊的數無需再搜尋,直接搜尋左邊的數。
演算法:
int sequential search(int list[],int,n,int key)
{
int i;
for(i=0; i < n, i++)
if (list[i]==key)
return i+1;
return(-1)
}
二元樹:
在計算機科學中,二元樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二元樹常被用於實現二元搜尋樹和二叉堆。
舉例:
在二分搜尋法中,將數列不斷的分為兩個部份,每次從分割的部份中取中間數比對,例如要搜尋90於以下的數列,首先中間數索引為(0+9)/2 = 4(索引由0開始):
[7 36 42 55 61 68 83 88 90 95]
由於61小於90,所以轉搜尋右邊的數列:
7 36 42 55 61 [68 83 88 90 95]
由於88小於90,再搜尋右邊的數列,這次就找到所要的數了:
7 36 42 55 61 68 83 88 [90 95]
全站熱搜