我照着数据结构书上打的代码,运行完却不是正确结果,求大佬看看
#include <stdio.h>
//一次排序
void HeadAdjust(int A[], int len, int k) {
A[0] = A[k];
int dongzhi = 2 * k;
for (; dongzhi <= len; dongzhi *= 2) {
if (dongzhi < len && A[dongzhi] < A[dongzhi + 1]) {
dongzhi++;
}
if (A[0] >= A[dongzhi]) {
break;
}
else {
A[k] = A[dongzhi];
k=dongzhi;
}
}
A[k]=A[0];
}
//初始建立大根堆
void BuildMaxHeap(int A[], int len) {
for (int i = (len / 2); i > 0; i--) {
HeadAdjust(A, len, i);
}
}
//交换算法
void swap(int A[], int j) {
int temp = A[j];
A[j] = A[1];
A[1] = temp;
}
int main(void) {
int A[9] = { 0,9,17,32,45,53,65,78,87 };
BuildMaxHeap(A, 8);
for (int j = 8; j > 1; j--) {
swap(A,j);
HeadAdjust(A, 1, j - 1);
}
for (int i = 1; i < 9; i++) { //测试
printf("A[%d]=%d\n", i, A[i]);
}
return 0;
}