Я пытаюсь создать и отсортировать кучу, используя этот массив в Java. Я продолжаю получать исключение индекса массива за пределами границ в моей функции maxHeap. Код кажется мне понятным, поэтому я не уверен, откуда берется ошибка.
Кто-нибудь знает, что я делаю неправильно?
public static void main(String[] args) {
int[] array = { 5, 16, 10, 7, 43, 12, 75, 33, 47, 3, 2489, 591, 6639, 557, 84, 9054, 17, 8841, 99, 701, 21, 78, 9, 36, 839};
heapSort(array3);
System.out.println("Heap Sort:");
printArray(array3);
}
public static void createHeap(int []A){
int n = A.length-1;
for(int i=n/2;i>=0;i--){
maxheap(A,i);
}
}
public static void maxheap(int[] A, int i){
int n = A.length;
int largest;
int left=2*i;
int right=2*i+1;
if(left <= n && A[left] > A[i]){
largest=left;
}
else{
largest=i;
}
if(right <= n && A[right] > A[largest]){
largest=right;
}
if(largest!=i){
int temp=A[i];
A[i]=A[largest];
A[largest]=temp;
maxheap(A, largest);
}
}
public static void heapSort(int []A){
createHeap(A);
int n= A.length;
for(int i=n;i>0;i--){
int temp=A[0];
A[0]=A[i];
A[i]=temp;
n=n-1;
maxheap(A, 0);
}
}
public static void printArray(int[] sortedArray) {
for (int i = 0; i < sortedArray.length; i++) {
System.out.print(sortedArray[i] + ", ");
}
System.out.println("");
}
<= n
иi=n
. - person Bernhard Barker   schedule 03.04.2014