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;       
    }
}