黑崎一户 • 3天前
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; }
评论:
请先登录,才能进行评论