java - HackerRank:我的快速排序算法太慢了
问题描述
有人可以向我解释为什么这个 QuickSort 算法的性能很差吗?
我遵循了 Derek Banas 的教程,所以我认为它是最佳的。
public static void quickSort(int[] arr, int left, int right){
if(left>=right) return;
int pivot = arr[right];
int index = partition(arr, left, right, pivot);
quickSort(arr, left, index-1);
quickSort(arr, index+1, right);
}
private static int partition(int[] arr, int left, int right, int pivot){
int leftPointer = left-1;
int rightPointer = right;
while(true){
while(arr[++leftPointer]<pivot && leftPointer<=rightPointer);
while(arr[--rightPointer]>pivot && rightPointer>leftPointer);
if(leftPointer>=rightPointer) break;
else{
//swap values
int temp = arr[leftPointer];
arr[leftPointer] = arr[rightPointer];
arr[rightPointer] = temp;
}
}
int tempP = arr[leftPointer];
arr[leftPointer] = arr[right];
arr[right] = tempP;
return leftPointer;
}
解决方案
推荐阅读
- c# - 编辑 PDF 后,Adobe Acrobat Reader DC 不会将当前文件夹作为另存为目标
- azure - 在 Azure Application Insights 上找不到异常
- node.js - 使用 fastify-mongodb 分离 Routes 文件和模型
- javascript - 控制台中的奇怪结果:将“未定义”附加到输出
- c# - 在linq中分组并显示所有具有相同属性值的组项
- javascript - 使用纯 JavaScript 或 jQuery 将数组数组转换为键值对
- javascript - 如何运行连续监听流的 node.js 函数?
- python - Youtube + Selenium ChromeDriver (Python) - 如何循环播放 youtube 视频?
- c# - 按下按钮重新启动脚本 C# + Unity
- java - 具有可选返回类型的方法返回空值