WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Bubblesort

 

sortking
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2009, 17:27     Titel: Bubblesort
  Antworten mit Zitat      
hey, ich hab ein problem!
ich habe eine function geschrieben "bubblesort", ist einfach eine funtion die einen vektor der größe nach sortiert. funktioniert auch gut Wink

jetzt will ich ein skript schreiben in dem ich eine maximale länge eines vektors eingebe und von jeder vektorlänge 100 random vektoren gebildet werden sollen. die vektorlänge soll immer um 1 abnehmen.
außerdem soll der mittelwert der rechnerzeiten gemessen werden, der für jede vektorlänge gebraucht wird. die varianz dieses werte ebenfalls!

ich will einfach mehrere sortierfunctionen miteinander vergleichen.

es funktioniert eigentlich alles super, bis auf das, dass mein "toc" immer 0 ist und somit nichts in mein "zeit" array hineingeschrieben wird... kann mir jemand helfen? ich komm echt nicht weiter!

Code:

clc
disp('Bitte maximale Länge der Vektoren eingeben!')
n=input('Länge: ');

bubblezeitmw=[1:1:n];
bubblevarianz=[1:1:n];
heapzeimwt=[1:1:n];
quickzeitmw=[1:1:n];

    for a=1:n
        for b=1:100
            zeit=[1:1:100];
            tic
        bubble(randint(1,n,[1,100]),n);
            zeit(b)=toc;
        end
        bubblevarianz(n)=max(zeit)-min(zeit);
        bubblezeitmw(n)=mean(zeit);
       
    n=n-1;
    end
    bubblezeitmw
    bubblevarianz

 
Private Nachricht senden Benutzer-Profile anzeigen


sortking
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2009, 17:36     Titel:
  Antworten mit Zitat      
ok ... nach einem einfachen neustart von matlab zeigt er mir jetzt wenigstens die zeiten an ... matlab spinnt bei "tic/toc" manchmal... das ist mir schon öfter passiert!

ausblenden lässt sich die zeit nur nicht mehr... hunderte von zeiten werden angezeigt... aber im "zeit" array ist immer noch nichts drin...
Private Nachricht senden Benutzer-Profile anzeigen
 
sortking
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2009, 17:40     Titel:
  Antworten mit Zitat      
habs jetzt umgeschrieben...

jetzt funktioniert es... mittelwert und varianz kann aber irgendwie nicht stimmen... die varianz ist größer als der mittelwert !?!?!?!?!

Code:

clc
disp('Bitte maximale Länge der Vektoren eingeben!')
n=input('Länge: ');

bubblezeitmw=[1:1:n];
bubblevarianz=[1:1:n];
heapzeimwt=[1:1:n];
quickzeitmw=[1:1:n];
w=1;
    for a=1:n
        for b=1:100
            zeit=zeros(1,100);
            tic;
        bubble(randint(1,n,[1,100]),n);
            toc;
            zeit(w)=toc;
            w=w+1;
        end
        bubblevarianz(n)=max(zeit)-min(zeit);
        bubblezeitmw(n)=mean(zeit);
       w=1;
    n=n-1;
    end
    bubblezeitmw
    bubblevarianz
 
Private Nachricht senden Benutzer-Profile anzeigen
 
sortking
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2009, 18:01     Titel:
  Antworten mit Zitat      
so... jetzt hab ichs noch geplottet...
weiß jemand wieso das so komisch aussieht und nicht so wie es sein sollte?

Code:

clc
disp('Bitte maximale Länge der Vektoren eingeben!')
n=input('Länge: ');
hilf1=n;
bubblezeitmw=[1:1:n];
bubblevarianz=[1:1:n];

w=1;
    for a=1:n
        for b=1:100
            zeit=zeros(1,100);
            tic;
        bubble(randint(1,n,[1,100]),n);
            toc;
            zeit(w)=toc;
            w=w+1;
        end
        bubblevarianz(n)=max(zeit)-min(zeit);
        bubblezeitmw(n)=mean(zeit);
       w=1;
    n=n-1;
    end
   
x1=1:hilf1;
y1=bubblezeitmw;
e=bubblevarianz;
errorbar(x1,y1,e)
title('Bubblesort'), ylabel('Zeit'), xlabel('Länge der Vektoren')
   
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 08.06.2009, 14:12     Titel:
  Antworten mit Zitat      
Hallo,

zwei Tips: für die äussere Schleife könntest Du auch gleich
Code:
nehmen, statt a von 1 bis 100 zu zählen und n gleichzeitig rückwärts.
Zweitens: wenn die Zeiten sehr kurz sind (für kleine n), streut tic/toc sehr. Das liegt weniger an tic-toc als an der eingebauten Systemuhr, die nicht gerade genau ist. Für diesen Fall müsstest Du noch eine innere Schleife machen, die das etwas ausgleicht.

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 08.06.2009, 18:24     Titel:
  Antworten mit Zitat      
Hallo sortking,

Du schreibst:

Code:
...
for b=1:100
    zeit=zeros(1,100);
    tic;
    bubble(randint(1,n,[1,100]),n);
    toc;
    zeit(w)=toc;
    w=w+1;
end


Der Fehler: Du überschreibst den Vektor zeit immer wieder mit Nullen (zeit=zeros(1,100)Wink, obwohl du ihn schon teilweise gefüllt hattest.

Anderes wurde seit Deiner ersten Version komplizierter. Du brauchst beispielsweise nur ein toc und der Zähler w ist überflüssig.

Und die äußere Schleife ist wirklich ziemlich merkwürdig ...

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.