Salut J'ai vraiment problème avec la fusion de deux listes dans le code tel que mergesort voici mon code et il lancera une exception, mais je ne sais pas pourquoi! S'il vous plaît aidez-moila fusion de deux listes
private void solve(List<Point> upperHull) {
list = upperHull;
number = upperHull.size();
dcHullForUpperHull(0, number-1);
}
private void dcHullForUpperHull(int low, int high) {
/*System.out.println(list);*/
if (low<high) {
// Get the index of the Object which is in the middle
int mid = (low + high)/2;
// Sort the left side of the list
dcHullForUpperHull(low, mid);
// Sort the Right side of the list
dcHullForUpperHull(mid +1 , high);
//combine them both.
mergeForUpperHull(low, mid, high);
}
}
private void mergeForUpperHull(int low, int mid, int high) {
List<Point> auxiliaryList = new ArrayList<Point>();
List<Point> auxiliaryListTow = new ArrayList<Point>();
for (int i = low; i <= mid; i++) {
auxiliaryList.add(upperHull.get(i));
}
for (int i = mid + 1; i <= high; i++) {
auxiliaryListTow.add(upperHull.get(i));
}
System.out.println(auxiliaryList.get(mid));
System.out.println(auxiliaryList.get(low));
}
l'exception ci-dessous pour la ligne: System.out.println(auxiliaryList.get(mid));
exception:
X :166.0 Y: 104.0angle0.0
X :166.0 Y: 104.0angle0.0
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at ConvexHull.DCHullVersion.mergeForUpperHull(DCHullVersion.java:142)
at ConvexHull.DCHullVersion.dcHullForUpperHull(DCHullVersion.java:126)
at ConvexHull.DCHullVersion.dcHullForUpperHull(DCHullVersion.java:122)
oui j'ai résolu le problème de cette manière en supprimant "=" pour mid <= haut – user472221
Pourriez-vous s'il vous plaît mettre à jour comment la solution ci-dessus a résolu le problème? J'aimerais voir une solution de travail? –