编辑代码

#include <stdio.h>
void HeadAdjust(int A[], int k, int len) {
	A[0] = A[k];
	for (int i = 2 * k; i < len; i *= 2) {
		if (i < len&&A[i] < A[i + 1]) {
			i++;
		}
		if (A[0] > A[i])
			break;
		else
		{
			A[k] = A[i];
			k = i;
		}

	}
	A[k] = A[0];
}
void BulidMaxHeap(int A[], int len) {
	for (int i = len / 2; i > 0; i--) {
		HeadAdjust(A, i, len);
	}

}

void HeapSort(int A[], int len) {
	BulidMaxHeap(A, len);

	int temp;
	for (int i = (len-1); i >1; i--)
	{
		temp = A[i];
		A[i] = A[1];
		A[1] = temp;
		HeadAdjust(A, 1, i - 1);

	}
}
int main() {
	int A[] = { 0,69,5,3,12,1 };
	HeapSort(A, 6);
	for (int i = 1; i < 6; i++)
	{
		printf("%d\n", A[i]);
	}
	return 0;
}