Új hozzászólás Aktív témák

  • Lacces

    őstag

    Van kettő buborékrendezéses algoritmus C#-ban.

    [C static void bubbleSort(int[] array)
    {
    // Write your code here.
    int j;
    int temp;
    int i = array.Length - 1;
    while (i > 0)
    {
    int swap = 0;
    for (j = 0; j < i; j++)
    {
    if (array[j] > (array[j + 1]))
    {
    temp = array[j];
    array[j] = array[j + 1];
    array[j + 1] = temp;
    swap = j;
    }
    }
    i = swap;
    }

    }
    }

    A másikban az eltérés csak az if feltétel if (array[j].CompareTo(array[j + 1]) > 0)

    1.Kérdés, hogy hogy nem kell a függvény argumentumát int[ ] array - ről IComperable[ ] array -re változtatni? Hogy-hogy nem kéri ezt az interfészt?
    És azért nem kell az IComparable interfészt implementálni mert a static void main() és static void bubble-el dolgozom?
    (Class-okat nem használok, csak egy sima tömb rendezés)

    2. Kérdés, van-e jelentős eltérés a két if feltétel között?
    CompareTo() annyit tesz, ha igaz, hogy a j-dik elem nagyobb mint a j+1-dik akkor 1-el tér vissza, és így tovább. És ha ez az érték 1 ami > 0, nál akkor lép be a feltételbe.
    De akkor nem egyszerűbb csak simán az első verzió( array[a]>array[a+1])?

    Csak érdekelnek a miértek és a hogyanok :)

    [ Szerkesztve ]

Új hozzászólás Aktív témák