40分求助qwq
查看原帖
40分求助qwq
967055
bajia楼主2024/11/26 20:08
#include<bits/stdc++.h>
using namespace std;
int f[100005],n;
void mswap(int* a,int * b){
	int t=*b;
	*b=*a;
	*a=t;
	return;
}
void down(int pa,int n){
	int chl=pa*2+1;
	while(chl<n){
		if(chl+1<n&&f[chl+1]>f[chl]){chl++;}
		if(f[chl]>f[pa]){
			mswap(f+chl,f+pa);
			down(chl,n);
		}
		else{
			break;
		}
	}
}
void heapsort(){
	int flag=n/2;
	for(int i=flag;i>=0;i--){
		down(i,n);
	}
	for(int i=n-1;i>0;i--){
		mswap(f,f+i);
		down(0,i);
	}
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>f[i];
	heapsort();
	for(int i=0;i<n;i++) cout<<f[i]<<' ';
	return 0;
}//qwq

#2~#4WA

2024/11/26 20:08
加载中...