class HeapSort{
public static void main(String args[]){
int A[]={6,5,4,3,2,1};
HeapSor obj=new HeapSor(6);
obj.Heap_Sort(A);
obj.print(A);
}
}
class HeapSor{
int lenOfArray;
int HeapSize;
HeapSor(int len){
this.lenOfArray=len;
this.HeapSize=len;
}
void Heap_Sort(int A[]){
for(int i=0; i<lenOfArray; i++){
BuiltHeap(A);
HeapSize--;
swap(A,i,lenOfArray-i);
}
}
void BuiltHeap(int A[]){
for(int i=lenOfArray/2; i>=0; i--)
MaxHeapify(A,i);
}
void MaxHeapify(int A[],int i){
int l=2*i;
int r=2*i+1;
int max=i;
if(i>HeapSize)
return;
if(A[l]>A[r])
max=l;
else
max=r;
if(A[i]<A[max])
swap(A,i,max);
//max=i;
}
void swap(int A[],int i,int j){
if(i==j)
return;
int temp=A[i];
A[i]=A[j];
A[j]=temp;
}
void print(int A[]){
for(int i=0; i<lenOfArray; i++)
System.out.print(A[i]+" ");
System.out.println();
}
}
コンパイルすると、このエラーが発生しました
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at HeapSor.MaxHeapify(HeapSort.java:41)
at HeapSor.BuiltHeap(HeapSort.java:31)
at HeapSor.Heap_Sort(HeapSort.java:23)
at HeapSort.main(HeapSort.java:5)
私は本当に何が間違っているのかを試してみましたが、失敗しました.誰かが私の間違っていることを教えてくれますか?
私の悪い英語でごめんなさい