Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 快速排序Hoare';它不工作了_Sorting_Quicksort_Partition - Fatal编程技术网

Sorting 快速排序Hoare';它不工作了

Sorting 快速排序Hoare';它不工作了,sorting,quicksort,partition,Sorting,Quicksort,Partition,嗨,我已经试着写霍尔的配分函数5个小时了。我读了,甚至直接从这些问题中复制了“正确”的函数,但它仍然离答案很远。这是我从Cormen的书中“翻译”出来的代码 int Hpartition(int A[], int p, int r){ int x = A[p]; int i = p - 1; int j = r + 1; while(true){ do{ j--; }while(A[j] <= x); do{ i++; }wh

嗨,我已经试着写霍尔的配分函数5个小时了。我读了,甚至直接从这些问题中复制了“正确”的函数,但它仍然离答案很远。这是我从Cormen的书中“翻译”出来的代码

int Hpartition(int A[], int p, int r){
int x = A[p];
int i = p - 1;
int j = r + 1;
while(true){
    do{
        j--;
    }while(A[j] <= x);
    do{
        i++;
    }while(A[i] >= x);
    if(i < j){
        swap(A[i],A[j]);
    }
    else
        return j;
 }
}
inthpartition(inta[],intp,intr){
int x=A[p];
int i=p-1;
int j=r+1;
while(true){
做{
j--;
}而(A[j]=x);
if(i
快速排序:

void qs(int A[],int p,int r){
if(p<r){
    int q=Hpartition(A,p,r);
    qs(A,p,q-1);
    qs(A,q+1,r);
}
}
void qs(int A[],int p,int r){
如果(p-tab[k];
}
qs(表0,9);

对于(int i=0;i您在翻译书本中的代码时有2个错误:

do{
     j--;
  }while(A[j] <= x);
同样适用于:

do{
     i++;
  }while(A[i] >= x);
还有一个:

qs(A,p,q-1);
qs(A,q+1,r);
改为:

qs(A,p,q);
qs(A,q+1,r);

do..while
repeat..till
使用反向中断条件:
while(x)
重复,只要
x
为真,
直到(x)
停止,一旦
x
变为真,非常感谢。如果你来波兰,请与我联系。给我啤酒!!
do{
     i++;
  }while(A[i] >= x);
qs(A,p,q-1);
qs(A,q+1,r);
qs(A,p,q);
qs(A,q+1,r);