Musterlösung Binäre Suche
Die binäre Suche kann auch rekursiv gestaltet werden.
Das Programm wird aufgerufen mit:
>> binaerSucheRekStart;
binaerSucheRekStart.m
disp('binaerSucheRekStart.m')
global Liste
global Gesucht
Gesucht = 'c'
Liste = 'Grundlagen der elektronischen Datenverarbeitung';
Liste = sort(lower(Liste));
ol = length(Liste); % oberes limit
ul = 1; % unteres limit
binaerSucheRek(ul,ol);
Das eigentliche Programm wird einmalig durch Eingabe von binaerSucheRekStart aufgerufen und ruft sich selbst immer wieder auf...
binaerSucheRek.m
function binaerSucheRek(ul,ol)
jj = round((ol+ul)/2);
global Liste
global Gesucht
if ol == ul
disp('Leider nicht gefunden!')
return
end
if Liste(jj) == Gesucht
fprintf('Oho, ich habe das %2s an der %2i ten Stelle von "%s" gefunden
',Gesucht,jj,Liste);
disp('Ende')
elseif Liste(jj) > Gesucht
ol = jj;
disp('runter')
binaerSucheRek(ul,ol)
elseif Liste(jj) < Gesucht
ul = jj;
disp('hoch')
binaerSucheRek(ul,ol)
end