关于快速排序的问题qsort
void qsort(int v[],int left,int right)
{
int i,last;
void swap(int v[],int i,int j);
if (left>=right) return;
swap(v,left,(left+right)/2); 问题1:为什么直接就交换left和(left+right)/2 ?
last=left;
for (i=left+1;i<=right;i++)
if (v[i]<v[left])
swap(v,++last,i); 问题2:++last 是先自增1再拿去使用的吧
swap(v,left,last); ++last和i 不是一样的吗?怎么还交换呢?
qsort(v,left,last-1);
qsort(v,last+1,right);
}
void swap(int v[],int i,int j)
{
int temp;
temp=v[i];
v[i]=v[j];
v[j]=temp;
}