Bonjour à tous,
Je me remets depuis peu au langage JAVA et suis confronté à une erreur Stack OverFlow lorsque je lance mon code de Tri Rapide. J'ai un peu du mal à comprendre ce qui cloche dans mon code. A priori, je dirais qu'il part en boucle infinie et finit par planter mais je ne comprends pas pourquoi il part dans une boucle infinie. Pourriez-vous m'éclairer svp ? Merci d'avance.
Voici mon code:
Voici le message d'erreur :
Code : 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 public class ClassMain { public static void main(String[] args) { // TODO Auto-generated method stub int[] tab = {15,15,17,3,8,11,28,6,55,7}; TriRapide(tab,0,tab.length-1); } public static void TriRapide(int[] tab, int deb, int fin) { if (fin>deb) { int ind_pivot = Partition(tab, deb, fin); TriRapide(tab,deb,ind_pivot); TriRapide(tab,ind_pivot+1,fin); } } public static int Partition(int[] tab, int a, int b) { int pivot = tab[a]; int i=a; for (int j=a+1;j<=b;j++) { if (tab[j]<pivot) { i++; int temp = tab[i]; tab[i] = tab[j]; tab[j] = temp; } } i++; tab[a] = tab[i]; tab[i] = pivot; return i; } }
Merci d'avance pour votre aide.Exception in thread "main" java.lang.StackOverflowError at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(Unknown Source) at sun.nio.cs.SingleByteEncoder.encodeLoop(Unknown Source) at java.nio.charset.CharsetEncoder.encode(Unknown Source) at sun.nio.cs.StreamEncoder.implWrite(Unknown Source) at sun.nio.cs.StreamEncoder.write(Unknown Source) at java.io.OutputStreamWriter.write(Unknown Source) at java.io.BufferedWriter.flushBuffer(Unknown Source) at java.io.PrintStream.write(Unknown Source) at java.io.PrintStream.print(Unknown Source) at java.io.PrintStream.println(Unknown Source) at ClassMain.TriRapide(ClassMain.java:13) at ClassMain.TriRapide(ClassMain.java:17) at ClassMain.TriRapide(ClassMain.java:17)
Partager