Bonjour
je fais un projet sur le trie par tas, mais lorsque j'appel mes fonctions j'ai cette erreur:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExeption: 11
at projet.construire_tas(projet.java:59)
at projet.main(projet.java:31)
je dois dépasser la capacité de mon tableau mais je ne voit pas ou,merci par avance de votre aide.
mon code est celui-ci:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
import javax.swing.*;
public class projet{
 
 
 
 
	public static void main(String[] args){
 
		int B[] = {5,7,9,24,0,8,8,88,76,64};
        int taille=10;
        int largeur=640;
        int longueur=640;
 
    construire_tas(B,10);
    trier_tas(B,10);  
 
 
 
 
 
 
}
public static void trier_tas(int A[],int taille){construire_tas(A,taille);
	                                 for(int i=taille-1;i>=1;i--){
                                                                      swap(A,i,0);}
                                                      entasser(A,0,taille);   }
 
 
public static  void entasser(int A[],int i,int n){int c=0;
	                                   if(gauche(i)>= n-1)return ;
	                                   c=gauche(i);
	                                   if (droite(i)<n-1){ if(A[droite(i)]>A[c]){c=droite(i);}
	                                   	   if(A[i]<A[c]){
	                                   	   	   swap(A,c,i);
	                                   	   	   entasser(A,c,n);
	                                   	   }
							}}
 
 
 public static void construire_tas(int A[],int n){
	                                 for(int i=0;i<n;i++){
	                                 	 if((A[i]<A[gauche(i)])||(A[i]<A[droite(i)])){  entasser(A,i,n);}
	                                 }
 
 
					}
 
 
public static int pere(int i){
return ((i-1)/2);
}
 
public static int gauche(int i){
return ((2*i)+1);
}
 
public static int droite(int i){
return ((2*i)+2);
}
 
 
public  static void swap(int tab[],int a,int b){int c;
c=tab[a];
tab[a]=tab[b];
tab[b]=c;
}}