首页 > 解决方案 > 我的快速排序实现没有正确排序

问题描述

我一直在环顾四周,但我的困惑仍然存在。我改变了一些人们在这里建议的东西,但这只会让代码变得更糟。

我将此列表用作测试 int [] testing = {5, 2, 9, 6, 1, 7, 8, 10, 4, 12, 3, 13, 11}; ,结果我得到 < 1 2 3 5 4 6 7 8 10 9 11 12 13 >。(我把错误加粗了)

我的主要快速排序方法。

public static void quickieSorty(int[] array, int start, int end) {

     int pivot;
     pivot = originalPivot(array, start, end);

     if (start < end)
     { 
        pivot = originalPivot(array, start, end);
  
        quickieSorty(array, start, pivot - 1);
   
        quickieSorty(array, pivot + 1, end);
     }  
}

分区(这是我在 for 循环中更改了一些内容,但这只会使列表的排序更少)。

private static int originalPivot (int[] array, int start, int end) {

    int pivotValue;
    int endOfList;
    int mid;

    mid = (start + end) / 2;

    swap(array, start, mid);

    pivotValue = array[start];

    endOfList = start;
    for (int i = start + 1; i <= end; i++)
    {
        if (array[i] < pivotValue)
        {
           endOfList++;
           swap(array, endOfList, i);
        }
    }
    swap(array, start, endOfList);
    return endOfList; 
}

Swap 是通用交换代码

private static void swap (int[] array, int a, int b) {

   int temp;

   temp = array[a];
   array[a] = array[b];
   array[b] = temp; 
}

我用我的教科书叫了一个助手,但他们告诉我他们不确定。欢迎任何帮助,提前感谢您的时间和帮助!

标签: javaquicksort

解决方案


推荐阅读