C++ 快速排序无法返回相同数组

C++ 快速排序无法返回相同数组,c++,array-algorithms,C++,Array Algorithms,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 equ

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 start, int end){
  if(start < end){
    part(array, start, end);
  }


}
void部分(int数组[100],int开始,int结束){
int pivot=array[start];
int i=开始;
int j=结束;
内部温度,温度2;
//我需要交换大于枢轴的元素
//j交换小于或等于枢轴的图元
而(i>j){
while(true){
if(数组[i]轴){
if(数组[j]>pivot){
打破
}
--j;
}
if(i对于(int k=0;k仅当

if(start < end){
    part(array, start, end);

因此,预计这不会起任何作用。
while
将永远不会进入。

如何使用
quick
part
?请发布一条。请注意,while(i>j)循环的主体
启动时以及使用调试器运行程序时,将不会执行
,您看到了什么?这正是调试器的用途。如果您不知道如何使用调试器,这是一个很好的机会,可以学习如何使用调试器一次运行一行程序,监视所有变量及其值的变化,并分析YSE程序的逻辑执行流程。知道如何使用调试器是每个C++开发者所需的技能,没有例外。在调试器的帮助下,你应该能够快速找到你编写的所有程序中的所有bug,而不必向任何人求助。必须对数组进行排序,因此请注意,您的程序看起来很危险,因为循环中没有
i
的限制
while(true)
array[i]
可能超出范围。
while(array[j]>pivot)
如果
end
在范围内,则循环是安全的,因为
array[j]>pivot
(与循环条件相同!)我之前使用的是相同的版本,但我做了一些更改,哈哈
int i = start;
int j = end;

while(i > j){