堆排序算法实现
模仿堆排序算法的实现,测试可行。
public static int[] sort(int[] src,int[] desc){
for(int i=0;i<src.length;i++){
int x = ajustHeap(src, 1, src.length-i);
desc[i] = x;
src[0] = src[src.length-i-1];
}
return desc;
}
private static int ajustHeap(int[] src,int curr,int change){
if(curr>change){
return 0;
}
if(curr*2>change){
return src[curr-1];
}else{
int leftMax = ajustHeap(src, curr*2, change);
int rightMax = ajustHeap(src, curr*2+1, change);
if(leftMax>rightMax&&leftMax>src[curr-1]){
int temp = src[curr-1];
src[curr-1] = src[curr*2-1];
src[curr*2-1] = temp;
}else if(leftMax<rightMax&&rightMax>src[curr-1]){
int temp = src[curr-1];
src[curr-1] = src[curr*2];
src[curr*2] = temp;
}
return src[curr-1];
}
}