# insertionsort



## babuschka (4. Mai 2007)

hier mein code warum auch immer funzt er nicht richtig kann mal bitte jemand nachschauen? 

```
import java.util.Random;
public class insertion
{
    public void Insertion(int Anzahl)
    {
        int tmp;
        int j;
        Random generator = new Random();
        int [] array  = new int [Anzahl];
        for (int l=0;l<Anzahl;l++)
        {
        array[l]=generator.nextInt(10000)+1;
        }
        long time1 =System.currentTimeMillis();
        for (int i=1;i<array.length;i++)
        {
            if (array[i]<array[i-1])
            {
            tmp=array[i];
            j=i;
            do 
            {
                j--;
                array[j+1]=array[j];
            }
            while(j>0&&tmp<array[j]);
            array[j]=tmp;
            }
        }
     for (int k=0;k<array.length;k++) // ausgabe der Zahlen zum zeitmessen deaktiviert
     System.out.println(array[k]);
       System.out.print (System.currentTimeMillis() - time1);

    }
}
```


----------



## nebulo (5. Mai 2007)

Es wäre schon gut wenn du eine Beschreibung angeben würdest, was nicht funktioniert.


----------



## babuschka (5. Mai 2007)

naja das programm sortiert einfach nicht :/es gibt zwar alle zahlen aus aber es sortiert nicht


----------



## Leroy42 (5. Mai 2007)

BlackPanther277 hat gesagt.:
			
		

> naja das programm sortiert einfach nicht



Kein Wunder! Dein Algorithmus hat rein gar nichts mit InsertionSort zu tun!

schau dir mal wiki insertion sort an.

Da hast du sowohl ein Java-Source-Code als auch ein wirklich
schön animierts Java-Applet zur Verdeutlichung dieses Sortierverfahrens.


----------



## Leroy42 (5. Mai 2007)

Hier der direkt Link auf das Java-Applet und den Source-Code.

www.wanginator.de/studium/applets/insertionsort_de.html


----------



## babuschka (5. Mai 2007)

genau das applet hab ihc mir angeschaut und probiert das zu implementieren


----------



## nebulo (5. Mai 2007)

Naja gar nichts kann man nichts sagen:

hier hab deinen Algorithmus ausnahmsweise mal korrigiert:


```
import java.util.Random;
public class Insertion
{

public static void main(String args[]){
	new Insertion().insertion(10);
}
    public void insertion(int Anzahl)
    {
       int tmp;
        int j;
        Random generator = new Random();
        int [] array  = new int [Anzahl];
        for (int l=0; l<Anzahl; l++)
        {
        array[l]=generator.nextInt(10000)+1;
        }

        long time1 =System.currentTimeMillis();
        for (int i=0; i<array.length; i++)
        {
            tmp=array[i];
            j=i;
	    while(j>0 && array[j-1] >= tmp){
		array[j] = array[j-1]; // nach rechts schieben
		j--;
	    }	
	    array[j]=tmp;
        }
     for (int k=0;k<array.length;k++) // ausgabe der Zahlen zum zeitmessen deaktiviert
     System.out.println(array[k]);
       System.out.print (System.currentTimeMillis() - time1); 
}
}
```

EDIT: Gewöhne dir mal einen schönen Stil an und halte Konventionen ein wie:

Klassennamen schreibt man groß.
Methodennamen chreibt man klein.

Schau dir vielleicht mal die Java Code Conventions an http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html


----------



## babuschka (5. Mai 2007)

hmm ich hab mir jetzt ma den sourcecode angeschaut aber das ist doch das gleiche bis auf das da nur while und nicht ne do while schleife verwendet wird oder bin ich jetzt blind oder hab ich einfach das mit dem do while falsch gemacht :?:


----------



## babuschka (5. Mai 2007)

jo danke


----------



## babuschka (5. Mai 2007)

aber so ganz verstehe ich deine änderungen nicht da ich mit bluej(bin noch ganz am anfang) arbeite brauch ich ja keine public static void main aber ansonsten hast du doch nur die do-while schleife zu ner einfachen while schleife gemacht und den startpunkt einen nach vorne gesetzt oder irre ich mich da?


----------



## nebulo (5. Mai 2007)

Im Prinzip müsste es auch mit einer do..while gehen. Aufjedenfall ist die Abfrage die du drin hast nicht korrekt. Und generell würde ich eher darauf verzichten do...while  zu benutzen wenn es nicht zwingend erforderlich ist.


----------



## babuschka (5. Mai 2007)

hmm ja ok hab ich ausgebaut funzt aber trotzdem net :/ ich schau nochmal drüber


----------



## babuschka (5. Mai 2007)

problem gelöst


----------

