快速排序无法返回相同的数组
quick sort not working returning same array
部分方法没有执行任何操作,它输出与输入相同的数组,我不知道出了什么问题
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 start, 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
永远不会进入。
部分方法没有执行任何操作,它输出与输入相同的数组,我不知道出了什么问题
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 start, 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
永远不会进入。