斐波那契查詢演算法

2021-09-08 16:58:16 字數 847 閱讀 1453

斐波那契查詢的核心是:

1)當key=a[mid]時,查詢成功;

2)當keya[mid]時,新的查詢範圍是第mid+1個到第high個,此時範圍個數為f[k-2] - 1個,即陣列右邊的長度,所以要在[f[k - 2] - 1]範圍內查詢。

**如下:

1 #include2 #include

3 #include4 #include5 #include6

7#define maxsize 2089

void fibonacci(int *f) //

構建斐波那契序列

1016

17int fibonacci_search(int *a,int key,int

n)18

34else

if(a[mid] 38else44}

45return -1;46

}4748int

main()49;

52int

k;53 printf("

請輸入要查詢的數字:\n");

54 scanf("

%d",&k);

55int pos = fibonacci_search(a,k,13

);56

if(pos != -1

)57 printf("

在陣列的第%d個位置找到元素:%d\n

",pos + 1

,k);

58else

59 printf("

未在陣列中找到元素:%d\n

",k);

60return0;

61 }

斐波那契查詢演算法

與二分查詢相比,斐波那契查詢演算法的明顯優點在於它只涉及加法和減法運算,而不用除法。因為除法比加減法要占去更多的機時,因此,斐波那契查詢的平均效能要比折半查詢好。include void fibonacci int f int fibonacci search int a,int key,int n...

斐波那契查詢演算法

斐波那契查詢原理與二分查詢或者插值查詢演算法類似,僅僅改變了中間結點 mid 的位置,mid 不再是中間或插值得到,而是位於 分割點附近,即 mid low f k 1 1 f 代表斐波那契數列 如下圖所示 由斐波那契數列 f k f k 1 f k 2 的性質,可以得到 f k 1 f k 1 1...

斐波那契查詢演算法

斐波那契查詢的核心是 1 當key a mid 時,查詢成功 2 當keya mid 時,新的查詢範圍是第mid 1個到第high個,此時範圍個數為f k 2 1個,即陣列右邊的長度,所以要在 f k 2 1 範圍內查詢。如下 1 include2 include 3 include4 includ...