java - 快速排序降序数组
问题描述
我正在实现一个用于对降序数组进行排序的递归快速排序算法,它似乎适用于小数组大小,但是当我的 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;
}
解决方案
推荐阅读
- javascript - 如何同时输出仪表图和折线图实时数据,问题在server.php页面?
- java - 使用 FirebaseUI 在 recyclerview 内的按钮上实现 onclicklistener
- sorting - 如何按子字段对对象数组进行排序?
- c# - 如何在切换按钮 C# 上建立依赖关系
- spring-boot - 带有 cron 表达式的 Spring Scheduler 停止工作
- java-record - 在 Java 16 项目中声明时,如何解决错误“-source 11 中不支持记录(使用 -source 16 或更高版本启用记录)”?
- wordpress - 页面编辑器应该使用我的主题的排版吗?
- sql - 我能够编译代码,但它给了我一个 sql 命令错误。我怎样才能解决这个问题?
- javascript - 我在开发谷歌插件时,前后端交互出现错误
- java - 我们可以在spring boot中为多部分文件上传设置自定义边界吗