Informatika gyűjtemény

NézetNyomtat

Kupac rendezés

Kattintásra indul a rendezés.
int bal(int k){return 2 * k;}
int jobb(int k){return 2 * k + 1;}

void epit(int T[]) {
    for(int i=T.length/2; i>= 0; i--){
        sullyeszt(T.length-1,i,T);
    }
}

void sullyeszt(int p, int r, int T[]){
    int b = bal(r);int j = jobb(r);int max;

    if (b<=&& T[b]>T[r]){ max = b;} else max = r;
    if (j<=&& T[j]>T[max]){max = j;}
    if (max != r){
        int tmp=T[r];T[r]=T[max];T[max]=tmp;
        sullyeszt(p,max,a);
    }
}

void sort(int T[]){
    int n = T.length - 1;
        
    epit(T);
    for (int i = n; i >=0; i--) {
        int tmp = T[0];T[0] = T[i]; T[i] = tmp;
        n --; 
        sullyeszt(n,0,T); 
    }
}