快速排序不起作用返回相同的数组

问题描述

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将永远不会输入。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...