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