C 經典演算法題 插補搜尋法

2021-10-02 06:26:28 字數 1473 閱讀 4898

如果卻搜尋的資料分布平均的話,可以使用插補(interpolation)搜尋法來進行搜尋,在搜尋的物件大於500時,插補搜尋法會比 二分搜尋法 來的快速。

插補搜尋法是以資料分布的近似直線來作比例運算,以求出中間的索引並進行資料比對,如果取出的值小於要尋找的值,則提高下界,如果取出的值大於要尋找的 值,則降低下界,如此不斷的減少搜尋的範圍,所以其本原則與二分搜尋法是相同的,至於中間值的尋找是透過比例運算,如下所示,其中k是指定要尋找的物件, 而m則是可能的索引值:

("數列:");

for(i =

0; i < max; i++

)printf

("%d "

, number[i]);

printf

("\n輸入尋找物件:");

scanf

("%d"

,&find);if

((i =

intsrch

(number, find)

)>=0)

printf

("找到數字於索引 %d "

, i)

;else

printf

("\n找不到指定數");

printf

("\n");

return0;

}int

intsrch

(int number,

int find)

return mid;

return-1

;}void

quicksort

(int number,

int left,

int right)

quicksort

(number, left, i-1)

;// 對左邊進行遞迴

quicksort

(number, j+

1, right)

;// 對右邊進行遞迴

}}

插補搜尋法

有問題 插補搜尋法 說明 如果卻搜尋的資料分布平均的話,可以使用插補 interpolation 搜尋法來進行搜尋,在搜尋的物件大於500時,插補搜尋法會比 二分搜尋法 來的快速。include include include define max 10 define swap x,y void q...

C 經典演算法題 二分搜尋法(搜尋原則的代表)

如果搜尋的數列已經有排序,應該盡量利用它們已排序的特性,以減少搜尋比對的次數,這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數左邊的數一定都小於要搜尋的物件,所以無需浪費時間在左邊的數 如果搜尋的數大於所搜...

C 經典演算法題 快速排序法(三)

之前說過軸的選擇是快速排序法的效率關鍵之一,在這邊的快速排序法的軸選擇方式更加快了 快速排序法的效率,它是來自演演算法名書 introduction to algorithms 之中。先說明這個快速排序法的概念,它以最右邊的值s作比較的標準,將整個數列分為三個部份,乙個是小於s的部份,乙個是大於s的...