下面程序的作用:采用快速排序法对一个整型数组进行排序
class QuickSort {
public static void sort(int v[],int left,int right){
int i,last;
if(left>=right)
return;
__(1)__ =left;
for(i=last+1; i<=right; i++)
if(v[i]< __(2)__)
swap(v, __(3)__ ,i);
sort(v,left,last-1);
sort(v,__(4)__,right);
}
privat __(5)__ void swap(int v[], int i, int j){
int temp;
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
}
求(1)————(5)的解?
class QuickSort {
public static void sort(int v[],int left,int right){
int i,last;
if(left>=right)
return;
__(1)__ =left;
for(i=last+1; i<=right; i++)
if(v[i]< __(2)__)
swap(v, __(3)__ ,i);
sort(v,left,last-1);
sort(v,__(4)__,right);
}
privat __(5)__ void swap(int v[], int i, int j){
int temp;
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
}
求(1)————(5)的解?
参考答案:
(1)last
(2)v[left]
(3)++last
(4)last+1
(5)static
对(1)(4)(5)我都觉得没问题,但(2)(3)是在看不懂!能指点一下么?
例如数组8,1,4,9,10,3,7
程序第一次运行有v[last]=8,v[i]=1,然后交换值,显然应该用swap(v,lsast,i)而不是swap(v,++last,i)
郁闷啊!