#include <iostream>
#include <algorithm>
using namespace std;
int a[55]= {0};
int main()
{
int n=0;
cin>>n;
for(int i=0; i<n; i++)
{
cin>>a[i];
}
for(int d=2; d<=n; d*=2)//sort核心
{
for(int i=0; i<=n-d; i+=d)
{
sort(a+(i),a+(i+d));
}
for(int i=0; i<n; i++)
{
cout<<a[i];
if(i!=n-1) cout<<" ";
}
cout<<endl;
}
if( (n & (n - 1)) != 0 )//判断n是不是2的指数,防止重复输出一组
{
sort(a,a+n);
for(int i=0; i<n; i++)
{
cout<<a[i];
if(i!=n-1) cout<<" ";
}
}
return 0;
}
【偷懒代码】SCAU 8645 归并排序(非递归算法)
于 2024-06-16 00:22:05 首次发布