class Solution {
public int[] sortArray(int[] nums) {
//堆排序
int len=nums.length;
HeapSort(nums,len);
return nums;
}
void HeapSort(int nums[],int len)
{
BuildMaxHeap(nums,len);
for(int i = len-1;i>=0;i--){
int temp ;
temp = nums[0];
nums[0]= nums[i];
nums[i]=temp;
HeapAdjust(nums,0,i);
}
}
void BuildMaxHeap(int nums[],int len){
for(int i = (len/2)-1;i>=0;i--){
HeapAdjust(nums,i,len);
}
}
void HeapAdjust(int nums[],int k,int len){
int temp = nums[k];
for(int i = (2*k)+1; i<=len-1; i=(i*2)+1 ){
if( i < len-1 && nums[i]<nums[i+1])
i++;
if(temp >nums[i])
break;
else{
nums[k]=nums[i];
k=i;
}
}