#include<bits/stdc++.h>
using namespace std;
void adjust(vector<int>& a, int i, int n)
{
int left = i * 2 + 1;
int right = i * 2 + 2;
int max = i;
if (left < n && a[left]>a[max])
max = left;
if (right < n && a[right]>a[max])
max = right;
if (max != i)
{
swap(a[max], a[i]);
adjust(a, max, n);
}
return;
}
void duipaixu(vector<int>& a, int n)
{
for (int i = (n - 1) / 2; i > 0; i--)
{
adjust(a, i, n);
}
for (int i = 0; i < n; i++)
{
swap(a[i], a[n - i]);
adjust(a, i, n - 1 - i);
}
return;
}
int main()
{
int n;
cin >> n;
vector<int>a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a.begin(),a.end());
for (auto c : a)
cout << c << " ";
cout << endl;
return 0;
}
数据结构复习