直接过

郭雨  •  1年前


include <bits/stdc++.h>

using namespace std;

void swap(int &a, int &b) {

int temp = a;
a = b;
b = temp;

}

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 BuildMaxHeap(int A[], int len) {

for (int i = len / 2; i > 0; i--)
	HeadAdjust(A, i, len);

}

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

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

}

int main() {

int n, A[1001], i, len;
while (cin >> n) {
	for (i = 1; i <= n; i++)
		cin >> A[i];
	HeapSort(A, n);
	for (int i = 1; i <= n; i++)
		cout << A[i] << " ";
}
return 0;

}


评论:

请先登录,才能进行评论