您的位置:首页 > 编程语言 > Java开发

java语言 堆排序

2016-03-01 20:23 323 查看
重点是向下调整

public class HeapSort {
public int[] heapSort(int[] A, int n) {
BuildMaxHeap(A, n);
for(int i=n-1; i>0; i--){
int tmp = A[i];
A[i] = A[0];
A[0] = tmp;
adjustDown(A, 0, i);
}
return A;
}

private void BuildMaxHeap(int[] A, int n){
for(int i = n/2; i>=0; i--){
adjustDown(A, i, n);
}
}

private void  adjustDown(int[] A, int k ,int len){
int tmp = A[k];
for(int i= 2*k; i<=len-1 ; i*=2){
if(i<len-1&&A[i]<A[i+1]) i++;
if(A[i] <= tmp) break;
else{
A[k] = A[i];
k = i;
}
}
A[k] = tmp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: