/**
* 堆排序
*
* @param nums
*/
public static void heapSort(int[] nums){
for(int i=nums.length/2-1;i>=0;i--){
headAdjust(nums,i,nums.length-1);
}
for(int i=nums.length-1;i>0;i--){
int tmp = nums[0];
nums[0] = nums[i];
nums[i] = tmp;
headAdjust(nums,0,i-1);
}
}
/**
* 堆排序调整函数
*
* @param nums
* @param s
* @param m
*/
public static void headAdjust(int[]nums,int s,int m){
int tmp = nums[s];
for(int j=2*s+1;j<=m;j=2*j+1){
if(j<m && nums[j]<nums[j+1]){
j++;
}
if(tmp>=nums[j]){
break;
}
nums[s] = nums[j];
s = j;
}
nums[s] = tmp;
}
Java实现堆排序
最新推荐文章于 2024-07-14 22:24:20 发布