% 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