重点是向下调整
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;
}
}
本文详细介绍了一种高效的排序算法——堆排序。通过构建最大堆并进行向下调整实现元素的有序排列。文章提供了完整的堆排序实现代码,并解释了如何通过调整算法内部逻辑来优化排序过程。
1348

被折叠的 条评论
为什么被折叠?



