(Hvis dette indlæg havner et eller andet åndsvagt sted, så tilgiv mig,
da det er mit første indlæg med denne klient)
Hej René
Jeg har valgt blot at kigge på din kode, og forsøge at fortælle dig
hvor den går galt. Koden kunne nok optimeres lidt, men den tager vi en
anden gang. Kig længere ned for at se noterne, men hvordan det reelt
skal gøre er det meningen du selv skal hitte ud af....
Hygge
/ Dennis
On Wed, 10 Oct 2001 12:02:26 +0200, "wilhardt" <wilhardt@hotmail.com>
wrote:
>Hej gruppe. Mit føste spørgsmål til denne gruppe.
>
>Jeg skal lave en selectionSort af et array bestående af heltalsobjekter.
>
>Jeg har gjort følgende:
>Jeg laver et array og fylder det med heltalsobjekter. Smider den videre til
>en metode selectionSort2. og så sker der ingenting. Eller mere præcist, den
>metode jeg har lavet gør ikke noget og udskrivning af indholdet før og efter
>sorteringen viser at array'et er uændret.
>Kan nogen hjælpe mig ? Og ja, opgaven er blevet stillet i forbindelse med et
>kursus. Jeg forventer ikke at nogen her skal løse opgaven for mig, jeg vil
>bare gerne ha' et hint i den rigtige retning, hvor går det galt. Jeg spørger
>for at lære.
>
>På forhånd tak. Hilsen René
>
>Her er koden fra min main metode samt de to omtalte metoder:
>
>klippet fra min main metode:
>************
>int etTal = 10;
>
>Object[] enNyTabel2 = fyldArray2(etTal);
>//udskriv tabellen
>System.out.println ("Tabellen før sortering ");
>for( int i = 0; i < enNyTabel2.length; i++ )
>{
> System.out.println (enNyTabel2[i]);
>}
>
>selectionSort2(enNyTabel2);
>
>//udskriv den sorteret
>System.out.println ("Tabellen efter sortering ");
>for( int i = 0; i < enNyTabel2.length; i++ )
>{
> System.out.println (enNyTabel2[i]);
>}
>******************
>
> //fyld et array random heltals-objekter
> public static Object[] fyldArray2( int antalTal )
> {
> Object[] tabel = new Object[antalTal];
>
> for( int i = 0; i < antalTal; i++)
> {
> tabel[i] = new Integer((int)(Math.random()*1000+1));
> }
> return tabel;
> }//fyldArray slut
>
>
>
> //SelectionSort algoritmen...sorterer et array med Integer-objekter
> public static void selectionSort2( Object[] tabel )
> {
> int startIndex;
> int minIndex;
> int temp;
>
> int length = tabel.length;
>
> for( startIndex = 0; startIndex < length - 2; startIndex++ )
> {
> minIndex = startIndex; //den første er den mindste...indtil
>videre
>
> //find det mindste nummer
> for( int i = startIndex + 1; i < length ; i++ )
> {
> //Der er objekter i dette array
> Integer erObjekt1 = (Integer)tabel[minIndex]; //den der
>skal sammelignes med
> int a = erObjekt1.intValue();
>
> Integer erObjekt2 = (Integer)tabel[i]; //den der peges på
> int b = erObjekt2.intValue();
>
> if( b < a )
> {
> erObjekt1 = new Integer(b);
> erObjekt2 = new Integer(a);
Du glemmer en vigtig ting... At huske at du lige har fundet en
"mindste værdi...
> }
> }
> //swap
Her er "fejl" nummer to. Du får rigtigt nok indsat den mindste værdi i
tabellen med index "startIndex" (hvis du vel at mærke retter fejl
nummer 1), men derved overskriver du den mindste værdi... Hint: Gem
den mindste værdi i en temp variable.
> temp = startIndex;
> tabel[ startIndex ] = tabel[ minIndex ];
> minIndex = temp;
> }
> }//selectionSort2 slut
>
>
>