代码之家  ›  专栏  ›  技术社区  ›  Lukas

使用第一个索引作为数据透视的快速排序不起作用

  •  0
  • Lukas  · 技术社区  · 8 年前

    嘿,我一直在尝试使用前端枢轴和后端枢轴为我的类编写一个快速排序程序。后端透视工作没有问题,但当我厌倦了修改代码以使用前端透视时,它不会对列表进行完全排序。

    由于这是学校作业,我不想从其他来源窃取代码。(我已经找到了很多工作代码的示例,但它与我的非常不同,而且我正在努力学习,而不仅仅是复制粘贴。)

    这是我的前端枢轴代码,如果需要更多,请告诉我。谢谢。:)

    public static int partitionPivotFront(int[] a, int lo, int hi)
    {
      int pivot = a[lo];
      int i = hi - 1;
    
      for (int j = hi; j > lo; j--)
        {
        if (a[j] >= pivot)
          {
            i--;
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
          }
        }
        int temp = a[i + 1];
        a[i + 1] = a[lo];
        a[lo] = temp;
        return i + 1;
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Max    8 年前

    查看您的if语句,并仔细检查您正在比较什么以及之后您在做什么。 由于pivot始终是第一个元素,所以您需要比较元素是否小于pivot,以及是否将其放在pivot之前。