C++ C+有真正的快速排序算法吗+;?

C++ C+有真正的快速排序算法吗+;?,c++,arrays,algorithm,sorting,C++,Arrays,Algorithm,Sorting,编辑:OP的困惑。实际上,它的移动取决于元素的数量 但是,正如您从网站自身的视觉所看到的,当第一个分区停止时,“3”仍然位于所选“7”轴的右侧 分区移动了所有内容,使得离开了这里的问题是什么?如果您发布的代码没有实现快速排序,那么它就没有实现快速排序。当然,薇欧薇也可以在C++中实现QuaseS排序。我不明白眼前的问题。@EugeneSh。需要更多ASCII art obv。ASCII art使任何代码都变得更好。@它被正确分区。最后我们有两个部分,一个部分的值是=7@mwigdahl这对程序员

编辑:OP的困惑。实际上,它的移动取决于元素的数量 但是,正如您从网站自身的视觉所看到的,当第一个分区停止时,“3”仍然位于所选“7”轴的右侧


分区移动了所有内容,使得
离开了这里的问题是什么?如果您发布的代码没有实现快速排序,那么它就没有实现快速排序。当然,薇欧薇也可以在C++中实现QuaseS排序。我不明白眼前的问题。@EugeneSh。需要更多ASCII art obv。ASCII art使任何代码都变得更好。@它被正确分区。最后我们有两个部分,一个部分的值是
=7
@mwigdahl这对程序员来说绝对是一个主题,但作为一个好问题不仅仅是关于主题。如果这个问题在这个网站上还不清楚,那么把它转移给程序员并不能神奇地让它变得更清楚。迁移只能改变一个问题是否与主题相关,而不能改变这个问题是否写得好/问得好。实际上,我仍然不确定下面的数组[6,5,1,3,8,4,7,9,2]是否能支持这一点。第一次分区的结果是65132 | 4798@apdm你确定?你是从运行代码中得到的吗?应该选择
8
作为轴心值。我认为您可能在放置
|
?@apdm时出错了。不,分区结果是6513247 | 98。
|
的位置很重要。@apdm:
|
的位置完全由小于轴的元素的计数决定。
void quickSort(int arr[], int left, int right) {
      int i = left, j = right;
      int tmp;
      int pivot = arr[(left + right) / 2];

      /* partition */
      while (i <= j) {
            while (arr[i] < pivot)
                  i++;
            while (arr[j] > pivot)
                  j--;
            if (i <= j) {
                  tmp = arr[i];
                  arr[i] = arr[j];
                  arr[j] = tmp;
                  i++;
                  j--;
            }
      };

      /* recursion */
      if (left < j)
            quickSort(arr, left, j);
      if (i < right)
            quickSort(arr, i, right);
}
1 2 5 7 3 | 14 7 26 12