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

  • #74220800

    törölt tag

    @emvy , @disy68, thx. Vegul sikerült egyszerűbben megoldanom, de újabb problémába akadtam.. :D

    Gyorsrendezést kellene kivitelezni javaban, úgy hogy pivotkent mindig a résztömb utolsó két elemének a lekerekített átlagát kell venni. A kódom működik, úgy ha a pivot mindig résztömb utolsó eleme. Az előző verzióval vmi félrecsúszik. Hálás lennek ha valaki bele tudna kukkantani.

    Itt a teszt hozza:

    class gyors {

    public static void main(String[] args) {

    Integer [] a = {-8, -2, -4, -3, -10, -4, -9, -2, -9, -11};

    qyors(a,0,a.length-1);

    for (int j = 0; j < a.length ; j++) {

    System.out.print(a[j] + " ");
    }


    }

    public static void qyors(Integer [] a, int p, int r){

    if ( p < r){

    int q = Partition(a,p,r);

    qyors(a, p, q - 1);

    qyors(a, q + 1 , r);

    }

    }

    public static int Partition(Integer [] a, int p, int r){

    Integer x = (a[r]+a[r-1])/2; //a resztomb utolso ket elemenek a lekerekitett atlaga kene pivotnak

    //Integer x = a[r]; //ezzel mukodik

    int i = p - 1;

    Integer help;

    for (int j = p; j < r ; j++) {

    if( a[j] <= x ){
    i++;
    help = a[i];
    a[i] = a[j];
    a[j] = help;

    }
    }

    help = a[i+1];
    a[i+1] = a[r];
    a[r] = help;

    return i+1;

    }






    }

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