代碼
class Sort7{
public void heapSort(int number[]){
if (number.length <= 1 || number == null)
return;
else {
bigHeap(number);
int length=number.length;
for(int i=0;i<length-1;i++) {
swap(number, 0, length - 1 - i);
shift(number, length - 1 - i, 0);
}
}
}
public void bigHeap(int number[]){
for(int i=(number.length-2)/2;i>=0;i--){
shift(number,number.length,i);
}
}
public void swap(int number[],int a,int b)
{
int c=number[a];
number[a]=number[b];
number[b]=c;
}
public void shift(int number[],int a,int b){
while (2*b+1<a){
int max=2*b+1;
if(max+1<a&&number[max+1]>number[max]){
max=max+1;
}
if(number[b]>=number[max]){
return;
}
swap(number,b,max);
b=max;
}
}
}