不知道错哪里
我的测试数据:
输入
3
5 1 4
输出
错误(就是我的)
1 5 4
正确
1 4 5
代码:
#include<iostream>
#include<cstdio>
using namespace std;
void L_Swap(int &a,int &b)
{
/*交换ab值*/
int S=a;
a=b;
b=S; //交换
}
void L_Sort(int a[],int Begin,int End)
{
/*二分查找函数*/
if(Begin>=End) //如果没有排序对象,跳过
{
return;
}
else //否则排序
{
int Mid=a[(Begin+End)/2],i=Begin,j=End; //定义函数
while(i<j)
{
while(a[i]<Mid && i<j) //查找左边的违规数
{
i++;
}
while(a[j]>Mid && i<j) //查找右边的违规数
{
j--;
}
L_Swap(a[i],a[j]); //交换两方违规数
}
L_Sort(a,Begin,Mid-1); //继续进行左侧排序
L_Sort(a,Mid+1,End); //继续进行右侧排序
}
}
int a[1001];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
L_Sort(a,0,n-1);
for(int i=0;i<n;i++)
{
cout<<a[i]<<' ';
}
}