C++经典算法题-插补搜寻法
44.Algorithm Gossip: 插补搜寻法 说明 如果却搜寻的资料分布平均的话,可以使用插补(Interpolation)搜寻法来进行搜寻,在搜寻的对象大于500时,插补搜寻法会比 二分搜寻法 来的快速。 解法 插补搜寻法是以资料分布的近似直线来作比例运算,以求出中间的索引并进行资料比对,如果取出的值小于要寻找的值,则提高下界,如果取出的值大于要寻找的 值,则降低下界,如此不断的减少搜寻的范围,所以其本原则与二分搜寻法是相同的,至于中间值的寻找是透过比例运算,如下所示,其中K是指定要寻找的对象, 而m则是可能的索引值: 代码示例 # include <stdio.h> # include <stdlib.h> # include <time.h> # define MAX 10 # define SWAP(x,y) {int t; t = x; x = y; y = t;} void quicksort ( int [ ] , int , int ) ; int intsrch ( int [ ] , int ) ; int main ( void ) { int number [ MAX ] = { 0 } ; int i , find ; srand ( time ( NULL ) ) ; for ( i = 0 ; i < MAX ; i ++ ) { number