首页 > 解决方案 > 快速排序降序数组

问题描述

我正在实现一个用于对降序数组进行排序的递归快速排序算法,它似乎适用于小数组大小,但是当我的 size=100000 时,例如,我收到此错误:线程“main”中的异常 java.lang .StackOverflowError

在对随机填充的数组进行排序时,它适用于更大的数组大小,这是我的快速排序代码:

    public void quicksort(int low, int high)
    {
        if(low<high)
        {
            int pivot = partition(low, high);
 
            quicksort(low, pivot - 1);
            quicksort(pivot + 1, high);
        }
        
    }

这是我的分区代码:

    public int partition(int low, int high)
    {
        int pivot = this.data[high];
 
        int pIndex = low;
 
        for (int i = low; i < high; i++)
        {
            if (this.data[i] <= pivot)
            {
                int temp = this.data[i];
                this.data[i] = this.data[pIndex];
                this.data[pIndex] = temp;
                pIndex++;
            }
        }
 
        int temp = this.data[high];
        this.data[high] = this.data[pIndex];
        this.data[pIndex] = temp;
 
        return pIndex;
    }

标签: javaquicksort

解决方案


推荐阅读