无聊写个堆排序2333
都说堆排序是最不稳定的排序,可我觉得他好稳定(一直是nlogn时间复杂度 这样的排序才靠的住 偷笑)
#include <bits/stdc++.h>
#define maxn 200005
typedef long long ll;
using namespace std;
ll a[maxn],n;
void adjust(ll i,ll len)
{
ll l = i << 1;
ll r = (i << 1) + 1;
ll mark = i;
if(a[mark] < a[l] && l <= len)mark = l;
if(a[mark] < a[r] && r <= len)mark = r;
if(mark != i)
{
swap(a[mark],a[i]);
adjust(mark,len);
}
}
void bulidsort()
{
for(ll i = n / 2; i >= 1; i --)
{
adjust(i,n);
}
for(ll i = n; i >= 1; i --)
{
swap(a[i],a[1]);
adjust(1,i - 1);
}
}
int main()
{
cin >> n;
for(ll i = 1; i <= n; i ++)
{
cin >> a[i];
}
bulidsort();
for(ll i = 1; i <= n; i ++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}