class Solution {
public int[] sortArray(int[] nums) {
for(int i = nums.length/2 - 1; i >= 0; i--){
heapAdjust(i, nums.length, nums);
}
for(int i = nums.length - 1; i >= 1; i--){
int temp = nums[0];
nums[0] = nums[i];
nums[i] = temp;
heapAdjust(0, i, nums);
}
return nums;
}
private void heapAdjust(int i, int len, int[] nums){
int k = i, temp = nums[i], idx = 2*k + 1;
while(idx < len){
if(idx + 1 < len){
if(nums[idx] < nums[idx + 1]){
idx = idx + 1;
}
}
if(nums[idx] > temp){
nums[k] = nums[idx];
k = idx;
idx = 2*k + 1;
}else {
break;
}
}
nums[k] = temp;
}
}
05-19
1727