AcWing 5334. 双向冒泡+提前终止排序优化
原题链接
简单
作者:
WyKer
,
2024-10-30 20:01:48
,
所有人可见
,
阅读 5
#include<iostream>
using namespace std;
void doublesort(int a[],int n)
{
int start=0,end=n-1;
bool flag=true;
while(start<=end||flag)
{
flag=false;
//第一趟把最大的放到最后
for(int i=start;i<end;i++)
{
if(a[i]>a[i+1])
{
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=true;
}
}
if(!flag)
break;
end--;
flag=false;
//第二趟把最小的放到最前
for(int i=end;i>start;i--)
{
if(a[i]<a[i-1])
{
int temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
flag=true;
}
}
start++;
}
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
doublesort(a,n);
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}