Quicksort 快速排序-分区伪代码检查索引超出范围?
如果我有以下配分函数(伪代码):Quicksort 快速排序-分区伪代码检查索引超出范围?,quicksort,partition,Quicksort,Partition,如果我有以下配分函数(伪代码): 分区(A、l、r){ p=A[r] i=l-1,j=r while(true){ 而(A[++i]p); if(i17(枢轴p) 但是右边的指数j会变成-1,因为24、23、22和21都大于17(枢轴p) 所以A[--j]会变成-1或者是一个索引检查( PARTITION(A,l,r) { p = A[r] i = l – 1, j = r while(true) { while(A[++i] < p);
分区(A、l、r){
p=A[r]
i=l-1,j=r
while(true){
而(A[++i]p);
if(i
我想我还应该检查j是否越界(索引-1)。例如:
21、22、23、24、17
左索引i将在元素21处停止,因为21>17(枢轴p)
但是右边的指数j会变成-1,因为24、23、22和21都大于17(枢轴p)
所以A[--j]会变成-1或者是一个索引检查(
PARTITION(A,l,r) {
p = A[r]
i = l – 1, j = r
while(true) {
while(A[++i] < p);
while(A[--j] > p);
if(i < j)
swap(A[i],A[j]);
else
swap(A[i], A[r];
// find and return split point
return i;
}
}