题目链接

912. 排序数组
思路分析

代码实现
class Solution {
public:
void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
void adjustDown(vector<int>& nums, int root, int n)
{
int parent = root;
int child = parent*2 + 1;
while(child < n)
{
if( (child+1) < n && nums[child] < nums[child+1])
child++;
if(nums[parent] < nums[child])
{
Swap(nums[parent], nums[child]);
parent = child;
child = parent*2 + 1;
}
else
break;
}
}
vector<int> sortArray(vector<int>& nums) {
int n = nums.size();
for(int i = ((n-1)-1)/2; i >= 0; --i)
{
adjustDown(nums, i, n);
}
int end = n-1;
while(end > 0)
{
Swap(nums[0], nums[end]);
adjustDown(nums, 0, end);
--end;
}
return nums;
}
};