问题描述
part方法没有做任何事情,它输出的数组与输入的数组相同,我不知道怎么了
void part(int array[100],int start,int end){
int pivot = array[start];
int i = start;
int j = end;
int temp,temp2;
// i to swap elements greater than pivot
// j to swap elements less than or equal to pivot
while(i > j){
while(true){
if(array[i] <= pivot ){
break;
}
++i;
}
while(array[j] > pivot){
if(array[j] > pivot){
break;
}
--j;
}
if(i < j){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
if(j < i){ // j - i cross each other
temp2 = pivot;
pivot = array[j];
pivot = temp2;
}
for(int k = 0; k<end;++k){
cout<<array[k];
}
}
void quick(int array[100],int end){
if(start < end){
part(array,start,end);
}
}
解决方法
仅在以下情况下才致电part
if(start < end){
part(array,start,end);
但是你这样做
int i = start;
int j = end;
while(i > j){
因此,预计这不会成功。 while
将永远不会输入。