更新时间:2016-08-19 10:04:25浏览次数:1+次
没有弄明白:在last=left之后的swap(v , ++last , i)时,v[left]的值为什么没有受到影响,left不是等于last等于0吗?在执行调换时不是将v[i]调换到v[last]吗?那么就是v[0](即v[left])处的值应该变了才对啊?
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, (right + left) / 2);
这是因为last变量有++操作,这是先将last的值加1再传递到swap函数,所以影响到的是v[left+1]而不是v[left]。
left和right是不变的,每次循环,i就会加1,而last要在v[i]<v[left]的情况下才加1,即找出比v[left]小的值。
相关资讯