Ricerca dicotomica (Binary search algorithm)

di il
1 risposte

Ricerca dicotomica (Binary search algorithm)

% Devo fare una ricerca dicotomica (Binary search algorithm)
% su una matrice di una riga solo per trovarmi o, l'indice del valore corrispondente,
% oppure l'indice del valore appena minore.
% http://en.wikipedia.org/wiki/Binary_search
% http://en.wikipedia.org/wiki/Interpolation_search
% Ma in Octave mi da' questo errore "can't perform indexing operations for <unknown type> type"

% Aiuto per favore
% vortigher0@yahoo.com

% Help Please
% I have to do a Binary search (Binary search algorithm) in a Matrix of one row to get the index of a a value
% equal or less than the value searched
% but in Octave I get the error: "can't perform indexing operations for <unknown type> type"
% Help Please

Prog = 7;

% nel programma definitivo questa riga non serve, e' qui' solo per dargli l'indice massimo della Matrice in cui cercare (cosa che nel programma definitivo avra' a disposizione proprio nel valore di questa variabile)
% In the final version of the program this line is unuseful;
%it's here only to give the maximum index of the Matrix in which to search.
% In the final version of the program the value will be provided by the previous lines.

tempo = [4, 6, 6, 8, 1, 2, 9];

% nel programma definitivo questa riga non serve, e' qui' solo per dargli una Matrice dove cercare
% In the final version of the program this line is unuseful;
%it's here only to give a Matrix of one row in which to search to the program.


function secondi = Proggr_s (seco)
					Sup = Prog;
					Infer = 0;
					Uscita = 2;
					while Uscita ~= 1
  						Medio = floor((Sup-Infer)/2)+Infer;
						if tempo(1,Medio) == tempo(1,seco)
							secondi=Medio;
							Uscita = 1;
						else
							if  tempo(1,Medio) < tempo(1,seco)
								Infer = tempo(1,Medio);
							else 
								if Medio-Infer==1
									secondi=Infer;
									Uscita = 1;
								else
									Sup = tempo(1,Medio);
								end
							end
						end
					end
end

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte