%--------------------------------------------------------------------------
% Berechnung des minimalen und maximalen Abstands zwischen allen moeglichen
% Punktpaaren in einer Punktmenge (x(i),y(i)), i=1,...,n.
%--------------------------------------------------------------------------
rng('default')
tic; % Starte Stoppuhr

n=15;
x = rand(1,n); % x-Koordinate
y = rand(1,n); % y-Koordinate

dmax = 0;
dmin = 100;
for i=1:n
    % Berechne Abstand zwischen (x(i),y(i)) und den uebrigen Punkten.
    % Zunaechst erstellen wir eine Liste ohne x(i),y(i), damit der Abstand
    % nicht Null ist.
    x1 = x;
    y1 = y;
    x1(i) = [ ];  % Entferne x(i) von der Liste
    y1(i) = [ ];  % Entferne y(i) von der Liste

    % vektorisierte Anweisung: Bestimme Abstand von (x(i),y(i)) zu allen
    % anderen Punkten
    d = sqrt((x(i)-x1).^2 + (y(i)-y1).^2);

    % Finde maximalen Abstand. Vergleiche dabei auch mit dem maximalen Wert
    % aus vorherigen Iterationen.
    dmax = max([d dmax]);

    % Finde minimalen Abstand
    dmin = min([d dmin]);
end
t_loop = toc;

fprintf('Minimaler Abstand: %8.4f\n',dmin);
fprintf('Maximaler Abstand: %8.4f\n',dmax);
fprintf('Benoetigte Zeit fuer for-Schleife: %8.4e\n',t_loop)

% Zeichne alle Punkte
plot(x,y,'r.','markersize',30)
title('Punktmenge','FontSize',14)
xlabel('x-Koordinate','FontSize',14)
ylabel('y-Koordinate','FontSize',14)
axis('square')
Minimaler Abstand:   0.0327
Maximaler Abstand:   1.1260
Benoetigte Zeit fuer for-Schleife: 5.2044e-04