33,007
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <vector>
using namespace std;
int quicksort (vector<int>::iterator i, vector<int>::iterator j)
{
if (i>=j)
return 0;
else
{
int pval;
int a=*i, b=*(i+(j-i)/2), c=*j;
if (a<b && b<c)
pval=b;
else if (a<b && c<a)
pval=a;
else
pval=c;
vector<int>::iterator m=i, n=j;
while(m<n)
{
while (*m<pval)
m++;
while (*n>pval)
n--;
if (m<n)
swap(*m,*n);
}
quicksort(i,m-1);
quicksort(m+1,j);
}
}
int main()
{
vector<int> a;
for (int i=0;i<7;i++)
{
int tmp;
cin>>tmp;
a.push_back(tmp);
}
quicksort(a.begin(),a.end()-1);
for (int i=0;i<a.size();i++)
cout<<a[i]<<endl;
return 0;
}
if (m<n)
swap(*m,*n);
if (m<n) {
if (*m==*n)
m++
else
swap(*m,*n);
}
while (*m<pval)
m++;
while (*n>pval)
n--;
改为
while (*m<=pval)
m++;
while (*n>=pval)
n--;