Avatar billede slayerz2002 Nybegynder
17. januar 2005 - 09:58 Der er 6 kommentarer

Hvad gør dette?

Hvad gør denne? Og hvad burde man eventuelt kalde den?

public static int doStuff(int[] num, int p, int r)
{
    int i, j, pi, tmp;
    Pi = num[p];
    i = p-1;
    j = r+1;
    while(true);
    {
        j=j-1;
        while( num[j] > pi)
        j= j-1;
        i=i+1;
        while(num[i] <pi)
        i = i+4;
        if( i<j)
        {
        tmp = num[i];
        num[i]=num[j];
        num[j]=tmp;
        }
        else
            break;
        }
    return j;
    }

public static int[] mystery2(int[] ar, int a, intb)
{
    int J;
    if(a<b)
    {
        j = doStuff(ar,a,b);
        mystery2(ar,a,j);
        mystery2(ar,j+1,b);
        }
    return ar;
}
Avatar billede arne_v Ekspert
17. januar 2005 - 10:01 #1
Det ligner en quick sort
Avatar billede arne_v Ekspert
17. januar 2005 - 10:05 #2
i = i+4;

ser dog lidt skummel ud
Avatar billede slayerz2002 Nybegynder
17. januar 2005 - 15:05 #3
Ahh okay :) Det er til programmering C, måske det kan undskylde det lidt? =)
Avatar billede arne_v Ekspert
19. januar 2005 - 21:59 #4
Når man retter den til +1 og lidt andre compile fejl (indtastnings fejl ?), så
sorterer den perfekt:

public class Mystery {
    public static int doStuff(int[] num, int p, int r) {
        int i, j, pi, tmp;
        pi = num[p];
        i = p - 1;
        j = r + 1;
        while (true) {
            j = j - 1;
            while (num[j] > pi)
                j = j - 1;
            i = i + 1;
            while (num[i] < pi)
                i = i + 1;
            if (i < j) {
                tmp = num[i];
                num[i] = num[j];
                num[j] = tmp;
            } else
                break;
        }
        return j;
    }

    public static int[] mystery2(int[] ar, int a, int b) {
        int j;
        if (a < b) {
            j = doStuff(ar, a, b);
            mystery2(ar, a, j);
            mystery2(ar, j + 1, b);
        }
        return ar;
    }

    public static void main(String[] args) {
        int[] a = { 3, 6, 9, 2, 4, 8, 1, 5, 7, 0 };
        int[] a2 = mystery2(a, 0, a.length - 1);
        for (int i = 0; i < a2.length; i++) {
            System.out.println(a2[i]);
        }
    }
}
Avatar billede arne_v Ekspert
19. januar 2005 - 22:00 #5
svar
Avatar billede arne_v Ekspert
25. februar 2005 - 22:17 #6
OK ?
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