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<=p && T[b]>T[r]){ max = b;} else max = r;
if (j<=p && 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);
}
}