RE:help!!! BUSQUEDA DE FIBONACCI
La busqueda de fibonacci es una modificacion de la busqueda binaria, dandole mas rapidez, ya que en el algoritmo solo intervienen sumas y restas para el calculo de la "mitad" y no divisiones como en la busqueda binaria. La idea es utilizar los numeros de la serie para generar mediante una suma o resta el indice del arreglo donde podria estar el valor a buscar, primero se avanza en la serie hasta encontrar un valor de la serie que sea mayor o igual que el numero maximo de elementos del arreglo. Supongamos que Fn es el numero de la serie que satisface lo anterior, entonces usando los numeros Fn-1 y Fn-2 de la serie se comienza la busqueda, sumando o restando, segun corresponda, Fn-2 a la variable que se usa como indice del arreglo para encontrar el valor deseado, en la medida que se disminuye la serie. Si la serie llego a su fin antes de encontrar el valor, entonces la busqueda no tuvo exito. Aca te paso la implementacion del algoritmo, es mejor que mil palabras :D...
function busqueda_fibonacci(lista: TipoArreglo; n, a: integer): integer;
var (* "n" representa la longitud del arreglo y "a" es el valor a buscar *)
f1,f2,t,mid: integer;
begin
f1:= 1; f2:= 1;
while (f1 < n) do
begin (* Busco el numero en la serie que satisface que f1>=n *)
f1:= f1 + f2; (* siguiente numero de fibonacci *)
f2:= f1 - f2; (* f2 almacena el numero anterior *)
end;
f1:= f1 - f2; (* me muevo a los dos anteriores *)
f2:= f2 - f1;
mid:= n - f1 + 1;
while (a <> lista[mid]) do
begin
if (mid < 0) or (a > lista[mid]) then