public class A5 {
public void heapSort(int [] nums) {
for(int i=nums.length/2-1;i>=0;i--) {
heapAdjust(nums,nums.length,i);
}
int temp=0;
for(int i=nums.length-1;i>=0;i--) {
temp=nums[i];
nums[i]=nums[0];
nums[0]=temp;
heapAdjust(nums,i,0);
}
}
public void heapAdjust(int [] nums,int len,int i) {
int k=i;
int index=2*k+1;
int temp=nums[i];
while(index<len) {
if(index+1<len) {
if(nums[index]<nums[index+1]) {
index=index+1;
}
}
if(nums[index]>nums[k]) {
nums[k]=nums[index];
k=index;
index=2*k+1;
}else {
break;
}
}
nums[k]=temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums= {16,7,3,20,17,8};
new A5().heapSort(nums);
for(int i=0;i<nums.length;i++) {
System.out.print(nums[i]+" ");
}
}
}
堆排序
最新推荐文章于 2021-07-24 23:27:25 发布