/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
sortering af heltalsobjekter i et array
Fra : wilhardt


Dato : 10-10-01 11:02

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);
}
}
//swap
temp = startIndex;
tabel[ startIndex ] = tabel[ minIndex ];
minIndex = temp;
}
}//selectionSort2 slut




 
 
Dennis B. Hansen (10-10-2001)
Kommentar
Fra : Dennis B. Hansen


Dato : 10-10-01 15:50

(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
>
>
>


Dennis B. Hansen (10-10-2001)
Kommentar
Fra : Dennis B. Hansen


Dato : 10-10-01 15:54

(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
>
>
>


wilhardt (12-10-2001)
Kommentar
Fra : wilhardt


Dato : 12-10-01 22:34

Tak for hjælpen Dennis. Jeg måtte lige tage den langsomt fra en ende af
/René




Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste