Avatar billede aslan Nybegynder
09. april 2002 - 17:55 Der er 4 kommentarer og
1 løsning

problemer med at få array sortering til at virke?

Jeg har disse 2 filer hvor jeg i denne ene skaber en array med 10 vilkårlige tal og i den anden sortere dem efter størrelse, men af en eller anden grund kan jeg ikke få sortering til at virke:

class ArrayMin
{
    int tabel[];

    ArrayMin(int t[])
    {
      tabel=t;
    }

    void selectionSort()
    {
        int n = tabel.length;

        int venstre = 0;
        int mindstIndex,mindst;

        for(venstre=0;venstre<(n-1);venstre++)
        {
            mindst=tabel[venstre];
            mindst=venstre;

            for(int j=venstre;j<(n-1);j++)
            {
                if(tabel[j]<mindst)
                {
                    mindst=tabel[j];
                    mindstIndex=j;
                }
            }
        }
    }
void skriv()
{
    for(int i=0;i<10;i++)
    {
        System.out.println(tabel[i]);
    }
}

}
----------------------------------------------------

class MakeArray
{
    int table[] = new int[10];

    ArrayMin smidInd;

    MakeArray()
    {
        for(int i=0;i<10;i++)
        {
            table[i]=(int)(Math.random()*100);
            //System.out.println(table[i]);


        }
    //System.out.println("\n\n");

    smidInd = new ArrayMin(table);
    smidInd.skriv();



    }
    public static void main(String[] aslan)
    {
        new MakeArray();
    }
}
Avatar billede jakoba Nybegynder
09. april 2002 - 18:17 #1
i den ydre løkke sætter du mindst til 2 forskellige værdier i 2 sætninger lige efter hinanden.

Mon ikke det er mindstIndex der skal sættes i en af sætningerne?

            mindst=tabel[venstre];
            mindst=venstre;

mvh JakobA
Avatar billede aslan Nybegynder
09. april 2002 - 18:37 #2
jeg har rettet fejlen det skulle have været mindstIndex=venstre; men jeg kan stadig ikke sortere
Avatar billede greybeard Nybegynder
09. april 2002 - 18:37 #3
Du kalder aldrig sorteringsrutinen.
Sorteringsrutinen bytter ikke om på noget. Den ændrer kun nogle indeksværdier.

class ArrayMin
{
    int tabel[];

    ArrayMin(int t[])
    {
      tabel=t;
      selectionSort(); // Her kaldes Sorteringen
    }

    void selectionSort()
    {
        int n = tabel.length;
    int temp;

        for(int i=0;i<(n-1);i++)
        {

            for(int j=i + 1;j<n;j++)
            {
                if(tabel[j]<tabel[i])
                {
                    // Her byttes elementerne
                    temp=tabel[i];
            tabel[i]=tabel[j];
                    tabel[j]=temp;
                }
            }
        }
    }
void skriv()
{
    for(int i=0;i<10;i++)
    {
        System.out.println(tabel[i]);
    }
}

}
Avatar billede aslan Nybegynder
09. april 2002 - 18:47 #4
ok takker endnu engang:)
Avatar billede mallemab Nybegynder
10. april 2002 - 11:55 #5
hvad med Java.Util.Array.sort(tabel)

Fra javadoc:

public static void sort(int[] a)

Sorts the specified array of ints into ascending numerical order. The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.

Parameters:
a - the array to be sorted.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester