Sorting 快速排序Hoare';它不工作了
嗨,我已经试着写霍尔的配分函数5个小时了。我读了,甚至直接从这些问题中复制了“正确”的函数,但它仍然离答案很远。这是我从Cormen的书中“翻译”出来的代码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
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);