class Solution {
public int[] sortArray(int[] nums) {
if(nums.length<=1||nums==null){
return nums;
}
int n=nums.length;
for(int i=n/2-1;i>=0;i--){
heapSort(nums,i,n-1);
}
int i=n-1;
while(i>0){
swap(nums,i--,0);
heapSort(nums,0,i);
}
return nums;
}
public void heapSort(int[] nums,int i,int end){
int tep=nums[i];
while(2*i+1<=end){
int child=2*i+1;
if(child!=end&&nums[child]<nums[child+1]){
child++;
}
if(tep<nums[child]){
nums[i]=nums[child];
i=child;
}
else break;
}
nums[i]=tep;
}
public void swap(int[] nums,int i,int j){
int tmp=nums[i];
nums[i]=nums[j];
nums[j]=tmp;
}
}
数据结构堆排序
最新推荐文章于 2022-04-05 21:56:41 发布