Java快速排序实施(代码修复)

席德

我已经用Java编写了我的快速排序版本,但是在调用第二个递归时遇到了一个问题。这是我的代码:

public static int[] quickSort(int[] array, int start, int end) {
    int pIndex;
    if (start < end) {
        int left = start;
        int right = end - 1;
        int pivot = array[end];

        //Start the partitioning

        while (left < right) {
            if (array[left] > pivot && array[right] < pivot) {
                int temp = array[left];
                array[left] = array[right];
                array[right] = temp;
                left++;
                right--;
            } else if (array[left] > pivot)
                right--;
            else
                left++;
        }

        if (array[end] < array[left]) {
            int temp = array[left];
            array[left] = array[end];
            array[end] = temp;
            pIndex = left;
        } else
        pIndex = end;
        //End partitioning            

        quickSort(array, 0, pIndex - 1);
        quickSort(array, pIndex + 1, array.length - 1);
    }
    return array;
}

参数start将是数组中第一个元素的索引,参数end将是最后一个元素的索引,我选择了最后一个元素作为枢轴。

我遇到的问题是quickSort(array,pIndex + 1,array.length-1);

array.length-1导致此操作无限进行,因为它是引用原始数组的。有什么办法可以解决这个问题,而不必每次都将新数组传递给函数?

我确实尝试创建一个全局变量来存储新的长度,但是我做得不太正确。

提前致谢。

如果代码不是Sort的很好实现,我感到很抱歉。我想自己一个人写一个,但结果还是遇到了问题。

有QUIT--Anony-Mousse

在快速排序使用递归的正确方法是使用startpivotend

您似乎正在使用包含端索引;那么您将需要递归到

quicksort(data, start, pivot - 1)
quicksort(data, pivot + 1, end)

枢轴元件已经处于其最终位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

快速排序实施-Python

来自分类Dev

快速排序的递归代码

来自分类Dev

以3的中位数实施快速排序

来自分类Dev

快速排序实施中有什么错误?

来自分类Dev

我的快速排序实施不起作用

来自分类Dev

我如何正确实施快速排序?

来自分类Dev

Java - 实现快速排序

来自分类Dev

C ++快速排序实施,输出不正确

来自分类Dev

此代码是否使用递归?(快速排序)

来自分类Dev

Java中的快速排序(Stackoverflow)

来自分类Dev

我应该如何修复此快速排序功能?

来自分类Dev

快速排序与插入排序的代码不起作用

来自分类Dev

Eclipse插件:实施关于悬停错误的快速修复建议

来自分类Dev

Eclipse插件:实施关于悬停错误的快速修复建议

来自分类Dev

如何快速修复 JSON-RPC 错误代码 591

来自分类Dev

快速实施中的A * pathing

来自分类Dev

我可以使用Scheme有效地实施快速排序吗?

来自分类Dev

Java中快速排序算法的帮助(NetBeans)

来自分类Dev

Java中快速排序的交换方法

来自分类Dev

我的快速排序Python代码有问题吗?

来自分类Dev

如何修复Java代码的视觉结构

来自分类Dev

将Java转换为Kotlin错误后实施代码

来自分类Dev

快速排序排序

来自分类Dev

排序(快速排序),分区

来自分类Dev

快速修复python marketdatarequest

来自分类Dev

尝试修复Java文件中的Checkstyle错误时,Eclipse“应用Checkstyle修复”或“快速修复”不执行任何操作

来自分类Dev

尝试修复Java文件中的Checkstyle错误时,Eclipse“应用Checkstyle修复”或“快速修复”不执行任何操作

来自分类Dev

Haskell实施IO代码

来自分类Dev

使用 JAVA 项目或 AEM 实施 Akamai CCU V3 快速清除

Related 相关文章

热门标签

归档