注:函数内//的两个for本来是会代替下面while的位置的(就是for和while2选1)###
#include <iostream>
#include <iomanip>
#include <string>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <math.h>
#include <string.h>
#include <cstdio>
using namespace std;
int a[100],temp,n,i;
void print()
{
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return;
}
void kuaisupaixv(int zuo,int you)
{
if(you-zuo+1<=1)return;
int zhong,zhongn;
zhong=you-zuo+1;
zhong/=2;
// for(int i=zuo;i<zhong;i++)
// if(a[i]>a[zhong])
// {
// temp=a[i];
// for(int j=i;j<zhong;j++)
// a[j]=a[j+1];
// a[zhong]=temp;
// zhong--;
// }
while(i<zhong)
{
if(a[i]>a[zhong])
{
temp=a[i];
for(int j=i;j<zhong;j++)
a[j]=a[j+1];
a[zhong]=temp;
zhong--;
}
else i++;
}
// for(int i=you;i>zhong;i--)
// {
// if(a[i]<a[zhong])
// {
// temp=a[i];
// for(int j=i;j>zhong;j--)
// a[j]=a[j-1];
// a[zhong]=temp;
// zhong++;
// }
// }
while(i>zhong)
{
if(a[i]<a[zhong])
{
temp=a[i];
for(int j=i;j>zhong;j--)
a[j]=a[j-1];
a[zhong]=temp;
zhong++;
}
else i--;
}
kuaisupaixv(zuo,zhong-1);
kuaisupaixv(zhong+1,you);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
kuaisupaixv(0,n-1);
print();
return 0;
}
所以,哪儿出问题了?##