Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Antwort
 
Themen-Optionen
Alt 16.02.2005, 09:10   Nach oben    #1
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 513
Standard Minimumsort

Hi Leute, erstmal: WOW, bin ganz erschrocken vom neuen Design *g*! So jetzt zur Frage. Wir sollen in der Berufsschule einen Sortieralgorythmus schreiben (wenn mans genau nimmt den Minimumsort). Hab ich dann auch gemacht. Funktioniert auch sehr gut, bis eine Zahl doppelt vorkommt. Wie kann ich meinen Code umschreiben, dass er auch mit doppelten Zahlen umgehen kann?

Code:
public class MiniSort {
    
    public static void main(String[] args) {
        
        System.out.println("\n---MinimumSort---\n");
        int zufallszahlen[] = new int[10];
        int kleinste = 101;
        int Position = 0;
        System.out.println("Die Zufallszahlen unsortiert sehen so aus:");
        for (int i = 0; i < zufallszahlen.length; i++) {
            zufallszahlen[i] = (int)(Math.random() * 100 + 1);
            System.out.print(zufallszahlen[i] + " ");
        }
        System.out.println("\n\nDie Zufallszahlen sehen sortiert so aus:");
        for (int Stelle = 0; Stelle < zufallszahlen.length; Stelle++) {
            for (int i = 0; i < zufallszahlen.length; i++) {
                if ((zufallszahlen[i] < kleinste) && (Stelle == 0)) {
                    kleinste = zufallszahlen[i];
                    Position = i;
                }
                else if ((zufallszahlen[i] < kleinste) && (Stelle >= 1)) {
                    if (zufallszahlen[i] > zufallszahlen[Stelle - 1]) {
                        kleinste = zufallszahlen[i];
                        Position = i;
                    }
                }
            }
            zufallszahlen[Position] = zufallszahlen[Stelle];
            zufallszahlen[Stelle] = kleinste;
            kleinste = 101;
        }
        for (int i = 0; i < zufallszahlen.length; i++) {
            System.out.print(zufallszahlen[i] + " ");
        }
        System.out.println("\n");
    }
}
Sorry, hab ich ohne Code-tags, find die aber auf die schnelle im neuen Design net
__________________
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.02.2005, 10:20   Nach oben    #2
peschmae
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

Dafür benutzt man dann normalerweise einen Debugger. Damit kann man ganz genau gucken was gemacht wird

Frage (gut möglich dass ich da was nicht bedacht habe) aber wozu fängst du in der inneren Schleife bei 0 an?
Code:
for (int i = 0; i < zufallszahlen.length; i++) {
Wieso nicht bei Stelle? Ich meine bis zu Stelle hast du zu dem Zeitpunkt das Array schon sortiert. Dann könntest du evtl. auch das Zeugs in der Schleife - if-else-Block vereinfachen.

[Edit]Ging ja ganz leicht. So:
Code:

public class MiniSort {

    public static void main(String[] args) {

        System.out.println("\n---MinimumSort---\n");
        int zufallszahlen[] = new int[10];
        int kleinste = 101;
        int Position = 0;
        System.out.println("Die Zufallszahlen unsortiert sehen so aus:");
        for (int i = 0; i < zufallszahlen.length; i++) {
            zufallszahlen[i] = (int)(Math.random() * 100 + 1);
			if(i == 7 || i == 3)
				zufallszahlen[i] = 12;
            System.out.print(zufallszahlen[i] + " ");
        }
        System.out.println("\n\nDie Zufallszahlen sehen sortiert so aus:");
        for (int Stelle = 0; Stelle < zufallszahlen.length; Stelle++) {
            for (int i = Stelle; i < zufallszahlen.length; i++) {
                if (zufallszahlen[i] < kleinste) {
                    kleinste = zufallszahlen[i];
                    Position = i;
                }
            }
            zufallszahlen[Position] = zufallszahlen[Stelle];
            zufallszahlen[Stelle] = kleinste;
            kleinste = 101;
        }
        for (int i = 0; i < zufallszahlen.length; i++) {
            System.out.print(zufallszahlen[i] + " ");
        }
        System.out.println("\n");
    }
}
[/Edit]

MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM
"We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth
peschmae ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.02.2005, 14:11   Nach oben    #3
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 513
Standard

Danke, funktioniert. Was mich nur stutzig macht, genau so hab ich's in der Schule auch ausprobiert und da gings nicht!!! Egal war ja sowieso nur Schule *g*
__________________
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:16 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44