Solution du TD d'informatique No. 7 : heapsort
Patrick Gros -- Patrick.Gros@irisa.fr
Didier Le Botlan -- didier.le_botlan@inria.fr
Lundi 8 janvier 2001
1 Tri par tas
public class heapsort {
public static void ajouter(int [] tableau, int nb, int x) {
// On suppose nb < tableau.length a l'appel
tableau[++nb] = x ;
int i = nb ;
while (i > 1 && tableau[i] < tableau[i / 2]) {
int t = tableau[i] ;
tableau[i] = tableau[i / 2] ;
tableau[i / 2] = t ;
i /= 2 ;
}
}
public static int supprimer(int [] tableau, int nb) {
int min = tableau[1] ;
tableau[1] = tableau[nb--] ;
int j, i = 1 ;
while (i <= nb / 2) {
if (2 * i == nb || tableau[2 * i] < tableau[2 * i + 1])
j = 2 * i ;
else
j = 2 * i + 1 ;
if (tableau[i] > tableau[j]) {
int t = tableau[i] ;
tableau[i] = tableau[j] ;
tableau[j] = t ;
i = j ;
}
else
return min ;
}
return min ;
}
public static void main(String [] arg) {
int [] tableau = new int[arg.length + 1] ;
for (int i = 0 ; i < arg.length ; ++i)
ajouter(tableau, i, Integer.parseInt(arg[i])) ;
for (int i = 1 ; i <= arg.length ; ++i)
System.out.print(tableau[i] + " ") ;
System.out.println() ;
for (int i = arg.length ; i > 1 ; --i)
tableau[i] = supprimer(tableau, i) ;
for (int i = 1 ; i <= arg.length ; ++i)
System.out.print(tableau[i] + " ") ;
System.out.println() ;
}
}
This document was translated from LATEX by
HEVEA.