search - fibonacci search
来源:互联网 发布:css 开发工具 知乎 编辑:程序博客网 时间:2024/06/16 21:54
#include "stdio.h"#include "string.h"#include "malloc.h" #define MAX_LIST 50typedef struct _SqList { int data[MAX_LIST]; int length;}SqList;//The key difference between Fibonacci search and binary search //is how the anchor point is determined.bool FibonacciSearch( SqList* L, int key, int& loc ){ static int F[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 }; int low = 0; int high = L->length - 1; int mid; int l = L->length; int k = 0; for( ; F[k] < L->length; k++ ); int *buf = L->data; //padding with duplicate numbers if necessary if( F[k] > MAX_LIST ) { buf = (int*)malloc( F[k]*sizeof(buf[0]) ); memcpy( buf, L->data, L->length*sizeof(buf[0]) ); } for( ; l < F[k]; l++ ) buf[l] = L->data[high]; l = -1; high = F[k] - 1; while( k > 0 && low <= high ) { mid = low + F[k-1]; if( key < buf[mid] ) { high = mid - 1; k = k - 1; } else if( key > buf[mid] ) { low = mid + 1; k = k -2; } else { if( mid < L->length ) l = mid; else l = L->length - 1; break; } } if( buf != L->data ) free(buf); return ( loc = l ) != -1;;}int main(){ SqList d; int intarr[] = {1,10,23,48,65,67,78,79,98,100}; memcpy( d.data, intarr, sizeof(intarr)); d.length = sizeof(intarr)/sizeof(int); int index = 0; for( ; index < d.length; index++ ) printf(" %d", d.data[index] ); int key = 100; printf("\nfibonacci search %d...\n", key); FibonacciSearch( &d, key, index ); printf("%d is at position %d\n", key, index); printf("\n"); return 0;}
0 0
- search - fibonacci search
- Search
- search
- search
- search
- search
- Search
- search
- Search
- Search
- search
- search
- Search
- search
- search
- Search
- search
- Search
- 老板开理发店24年只收5元 顾客心疼求涨价
- Android—2015年代做安卓毕业设计 Android毕业设计毕业设计AndroidAPP
- OpenGL学习笔记-2015.3.24——transform feedback缓存&粒子系统示例分析
- jQuery源码学习(版本1.11)-整体架构
- 插件笔记_CryptoPlayerPrefs-1.3.3
- search - fibonacci search
- LeetCode - Divide Two Integers
- LeetCode - Add Binary
- C++之强制类型转换原理
- 火狐、IE、Chrome已进入三国时代
- Android开发之Intent
- LeetCode - Factorial Trailing Zeroes
- LeetCode - Excel Sheet Column Title
- a标签页面内跳转 链接被后台地址过滤器拦截