c++快速排序多输出了一个0,少了后面的一个数是怎么回事?
测试样例:
4
1 3 2 3
输出:
0 1 2 3
代码:
#include <bits/stdc++.h>
using namespace std;
int a[1005];
void quicksort(int l,int r)
{
if(l>=r)
{
return;
}
int pivot=a[l+rand()%(r-l+1)];
int i=l-1,idx=l,j=r+1;
while(idx<j)
{
if(a[idx]<pivot)
{
swap(a[idx++],a[++i]);
}
else if(a[idx]>pivot)
{
swap(a[idx],a[--j]);
}
else
{
idx++;
}
}
quicksort(l,i);
quicksort(j,r);
}
int main()
{
srand(time(NULL));
int n;
cin >> n;
for(int i=1;i<n;i++)
{
cin >> a[i];
}
quicksort(1,n);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
请各位回答!谢谢!