问该代码有没有摸到堆排序的边
  • 板块灌水区
  • 楼主爱瑶瑶公主
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/7/6 16:34
  • 上次更新2023/11/4 18:32:38
查看原帖
问该代码有没有摸到堆排序的边
368380
爱瑶瑶公主楼主2021/7/6 16:34

rt(不喜勿喷

#include<iostream>
#include<iomanip>
using namespace std;
int n,a[3005]; 
void d(int x)
{
	if(x>=n)
	{
		return;
	}
	else if(a[x]<a[(x-1)/2])
	{
		swap(a[x],a[(x-1)/2]);
		d((x-1)/2);
	}
	else if(a[x]<a[x-1])
	{
		swap(a[x],a[x-1]);
		d(x-1);
	}
	else 
	{
		d(x+1);
	}
}
int main()
{
	int i;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>a[i];
	}
	d(1);
	for(i=0;i<n;i++)
	{
		cout<<setw(5)<<a[i];
		if((i+1)%10==0)
			cout<<endl;
	}
	return 0;
}
2021/7/6 16:34
加载中...